mysql建立索引,实际工作中建立索引的示例
1.根据业务场景建立相应的组合索引,一般是在主键,外键,常用来筛选查询的字段,按照字段之间组合的紧密程度,建立一定顺序的索引。
例如:为 t_org_exam_join_member_day 建立索引。
首先考虑到字段之间的组合查询。故而先建立组合索引:
假如 A = f_organization_id, B = f_day, C = f_member_id
那么起组合效果的是 A ,A 和 B ,A 和 B 和 C ,就是说sql语句查询出来的条数和执行计划扫描的行数一样的。那样组合索引就起到了绝对的效果。
A 和 C 组合的话,索引可以起到效果,但是起不到绝对效果。索引扫描的行数就是仅仅是A 条件查询出来的 条数。
key 表示 执行这个sql,起到效果的索引。 rows 表示索引扫描的行数。
有时候条件查询可能是针对表的某几列,这样也许会导致组合索引失效,那么可以单独为这些列建立索引。比如只查询B,或者C等。
组合索引创建原则:
一个表中有三个字段,XX,YY,ZZ,如果要建立给这三个字段建组合索引(Composite Index),组合索引中字段的顺序应该遵循怎样一个原则。
一般的原则:越离散的字段越靠前。哪个列可以降低索引的扫描成本就放在前面。
比如:下位三个字段的离散情况
XX:2
YY:1000
ZZ:50000
那么建立索引的顺序应该为:ZZ,YY,XX
CREATE INDEX t_idx ON t (zz,yy,xx);
where 条件子句中,条件筛选得顺序不一定要与组合索引字段顺序一致,依然可以发挥索引的效果。
组合索引对应的key_len越大,表明该组合索引使用的越充分。
posted on 2019-08-28 12:19 芝麻开花——节节高 阅读(1077) 评论(0) 编辑 收藏 举报