zoukankan      html  css  js  c++  java
  • MySQL索引失效的几种场景

     我们都知道建立索引能够提高查询效率,那么是不是任何情况下都能提高呢,当然不是的的,下面我们就来列举一些常见的索引失效的场景。

    借用上一篇文章的dm_person_info表

    在card_code列没加索引的时,查询时间如下,大概都在0.07秒。


     我们来加上索引试试,加上后查询效率高了许多。



     在正确使用索引的情况下,查询一行数据的时间不到10毫秒,所以显示0.00 sec .

    1.列类型是字符串,查询条件未加引号。

    card_code列是身份证号,数据类型是varchar,在没有将证件号码用引号括起时不会使用索引,此时索引失效。


     2.未使用该列作为查询条件

    索引建在card_code列上,使用tel列作为查询条件,此时该索引未被使用到,也可以说是失效的。


    3.使用like时通配符在前

    我们可以看到通配符在后面时效率不受影响,说明此时索引未失效,通配符在前时索引失效。

    4. 在查询条件中使用OR

    查询条件中使用or会使索引失效,要想是索引生效,需要将or中的每个列都加上索引。

    5.对索引列进行函数运算

     6.联合索引ABC问题

    Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是index (a,b,c),可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c或c进行查找 。

    这里只介绍6种比较常见的失效场景,实际上还有很多,我们在实际开发中要注意到这些问题,不能掉到坑里去了,哈哈^_^  。

    原文:https://blog.csdn.net/dwl0208/article/details/83448520

  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453338.html
Copyright © 2011-2022 走看看