mysql模糊查询索引失效问题及解决方案

    技术2022-07-10  172

    mysql模糊查询索引失效问题及解决方案

    我们在使用like %通配符时常常会引起索引失效的问题。 这里,我们讨论一下like使用%的几种情况: 下列例子用到的索引(VC_STUDENT_NAME) 一、like ‘xx%’

    EXPLAIN select * from t_student where VC_STUDENT_NAME like ‘王%’ 我们发现使用%不放在开头的时候,索引是有效的

    二、like ‘%xx’

    EXPLAIN select * from t_student where VC_STUDENT_NAME like ‘%王’ 我们发现%放在开头时,索引便失效了。

    上述两个例子说明,在使用通配符时,%放在开头会引起索引失效。 但在现实问题里,往往需要把%放在开头作模糊匹配。这是我们可以通过覆盖索引的方式即索引覆盖查询,来解决索引失效的问题。

    EXPLAIN select * from t_student where VC_STUDENT_NAME like ‘%王’ 把查询列换成索引与之相应的列,索引失效问题得以解决。

    Processed: 0.009, SQL: 12