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越大,表明该组合索引使用的越充分。

原文地址:https://www.cnblogs.com/lipengsheng-javaweb/p/11423320.html