索引使用场景
2016-06-05 21:36:12 11 举报
AI智能生成
mysql索引使用的场景
作者其他创作
大纲/内容
适合返回很小比例的数据
估算方法
一组条件从大表里扫描的数据量占比“很小”
5%
1%更好
千万级别表0.1%以下
“NDV”(Number Distinct Value)很高
选择性
选择性越高,索引的作用越大。
show index from sta_order_0001
cardinality/总记录数 值越大越适合建立索引
单列索引和联合索引
两个单列索引 idx_c1(c1)、idx_c2(c2) 不等同于联合索引 idx_c1_c2(c1,c2)
联合索引里的列的顺序变动,索引的场景也会不同
联合索引(c1,c2,c3)能够覆盖的查询条件
(c1 = ? and c2 = ? and c3 = ?) (备注:全列匹配)
(c1 = ? and c2 = ? and c3 in (?,?,?)) (备注:最左前缀匹配)
(c1 = ? and c2 in (?, ?, ?)) (备注:最左前缀匹配,索引覆盖)
(c1 = ?) (备注:最左前缀匹配,索引覆盖)
(c1 in (?,?,?))
从上到下,时间成本增高
优化建议
最好的优化建议是让条件尽可能的具体,让“扫描行数”和“返回行数”尽可能的贴近
联合索引最好是以NDV最大的列打头,或者结合查询频率最高的条件综合决定
0 条评论
下一页