美文网首页
联合索引

联合索引

作者: EarthChen | 来源:发表于2018-08-10 16:29 被阅读48次

索引

索引的使用

什么时候使用索引表的主关键字

  1. 表的字段唯一约束
  2. 直接条件查询的字段
  3. 查询中与其它表关联的字段
  4. 查询中排序的字段
  5. 查询中统计或分组统计的字段

什么情况下应不建或少建索引

  1. 表记录太少
  2. 经常插入、删除、修改的表
  3. 数据重复且分布平均的表字段
  4. 经常和主字段一块查询但主字段索引值比较多的表字段

复合索引

命中规则

  1. 需要加索引的字段,需要在where条件中
  2. 数据量少的字段不需要索引
  3. 如果where条件中是or条件,加索引不起作用
  4. 符合最左原则
  • 最左原则:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找
  • 在创建符合索引时,应该仔细考虑列的顺序,对索引中的所有列搜索或对钱几列进行搜索时,符合索引非常有用。
  • 当一个表有多条索引可走时, Mysql 根据查询语句的成本来选择走哪条索引, 联合索引的话, 它往往计算的是第一个字段(最左边那个), 这样往往会走错索引

在mysql中使用索引注意

  1. 只要列中包含有null值将不会包含在索引中,复合索引只要有一列含有null值,那么这一列对于此复合索引就是无效的
  2. 对串列进行索引,如果可能应该指定一个前缀长度
  3. mysql查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
  4. like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
  5. 不要在列上进行运算
  6. NOT IN和操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替

https://www.cnblogs.com/softidea/p/5977860.html

相关文章

  • MySQL-联合索引

    一、什么是联合索引 两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。对于复合索引:Mysql从左到右的...

  • Mysql

    2020-01-21 联合索引本质 当创建(a,b,c)联合索引时,相当于创建了(a)单列索引,(a,b)联合索引...

  • 索引的技术点

    联合索引:多字段组合索引,加速组合条件查询 联合索引要满足从左到右的查询需求,例如(a,b,c)的联合索引,能够加...

  • MySQL - 索引优化技巧

    联合索引 在建立索引的时候,尽量在多个单列索引上判断下是否可以使用联合索引,联合索引使用不仅可以节省空间,还可以更...

  • 索引

    联合索引 (a,b,c)联合索引 (a,b,c) 实际建立了 (a)、(a,b)、(a,b,c) 三个索引 如下:...

  • 联合索引-以及如何使用索引

    联合索引 建立索引的时候,尽量建立联合索引,即多个字段组成1个索引。因为如果针对单个字段建立索引的话,会造成索引过...

  • 索引:联合索引和单个索引的区别

    联合索引和单个索引的区别 联合索引和单个索引的区别: 最佳左前缀:  如果我们创建了(area, age,sala...

  • MYSQL实战优化——索引介绍二

    联合索引查询原理 之所以介绍联合索引,是因为平时我们设计系统的时候一般都是设计联合索引,因为我还是要尽可能的让索引...

  • Mysql

    索引(一般监控到慢SQL,才会建索引) 前缀索引 常见索引误区 多列联合索引 左前缀例子(是一种联合索引的匹配规则...

  • 联合索引

    索引 索引的使用 什么时候使用索引表的主关键字 表的字段唯一约束 直接条件查询的字段 查询中与其它表关联的字段 查...

网友评论

      本文标题:联合索引

      本文链接:https://www.haomeiwen.com/subject/pyhlbftx.html