索引常被用来优化SQL,提升访问性能,典型的SQL场景如下:SELECT、UPDATE、 DELETE 语句的 WHERE 条件中的列。包含在ORDER BY, GROOUP BY, DISTINCT的字段 。多表JOIN的字段。设计索引可以参考如下策略:
1. 选择合适的索引字段
索引字段的选择需要结合业务需求,评估出应用中作为查询条件出现比较频繁的字段,在此字段上建立单独或者组合索引。选择建立索引的字段,应该道循以下的原则:
(1) 高选择性,选择性是指某列的不同值的数量占该表总数据量的百分比。选择性越高,通过索引查询返回的结果集越少,索引更为高效效。在OLTP 应用系统中,选择性应接近于 100%。
(2) 数据分布均匀,索引字段中,个别数据值占总数据量的百分率明显比其它数据值占总数据量的百分率高,表明该字段数据值分布不均,容易引起数据库选择错误索引,生成错误的查询执行计划。应该避免在数据值分布不均的字段上建立索引。
2. 选择合适的索引类型
选择单列索引还是组合素引选择,选择方式如下:
(1) 如果列的选择性非常高(接近于100%),适合建立单列索引。
(2) 根据查询条件,如果单列选择性不高,但组合列选择性较高时,需建立组合索引。
3. 合理使用组合索引
(1) 将具有选择性较高、使用最频繁目经常是等值查询或者N的放在组合索引的最左侧。
(2) 将具有一定选择性且是范围查询(>、<、>=、<=、BETWEEN...AND)放在组合素引的右侧
(3) 排序列必须紧跟在等值条件列的后面能使用该索引避免排序。
4. 对TEXT、BLOB和长VARCHAR,必须使用前缀索引
对于BLOB、TEXT,或者很长的VARCHAR类型的列,为它们的前几个字符(具体几个字符是在建立索引时指定的)建立索引,这样的索引就叫前缀索引。




