mysql 索引

索引设计原则

  • 搜索的索引列,不一定是所要选择的列。最适合索引的列是出现在 WHERE 子句中的列,或连接子句中指定的列,而不是 SELECT 关键字后的选择列表中的列。
  • 使用惟一索引。索引的列的基数越大,索引的效果越好。例如记录性别的列,只含有“ M”和“F”,索引效果不好。

  • 使用短索引。
  • 利用最左前缀。
  • 不要过度索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。索引太多,也可能会使 My SQL 选择不到所要使用的最好索引。只保持所需的索引有利于查询优化。
  • Inno DB 表尽量自己指定主键,当表中同时有几个列都是唯一的,都可以作为主键的时候,要选择最常作为访问条件的列作为主键,提高查询的效率。(InnoDB如果没有设置主键就按照unique的键进行排列,如果也没有unique就建立内部序列。)

hash 和 btree

  • 只用于使用=或<=>操作符的等式比较。
  • 只能使用整个关键字来搜索一行。
  • 不能使用 HASH 索引来加速 ORDER BY 操作。
  • My SQL 不能确定在两个值之间大约有多少行。
  • 用hash索引进行范围查询的时候依然要遍历全表。
原文地址:https://www.cnblogs.com/yxi-liu/p/7762376.html