一,用什么字段做索引较好?
> 整型字段最好
> 如果要用字符索引,最好选用定长字段
> 时间字段同理,也要固定长度(sql server中,比较常用的datetime已经是固定长度)
即:
1.尽量选择int类型作为索引
2.索引长度要固定
二, 为什么会出现索引失效的情况?
1.索引没设计好
2.sql语句不规范
三,导致索引失效的场景
> 使用or的时候,两边的字段都要有索引,否则会失效。
> 使用like模糊查询时,百分号加在前面(如'%小明','%小明%'),索引会失效('小明%'不会失效)。
> 对查询的某一列有函数计算时,索引会失效。 (遇到需要计算的字段,可以放在程序中计算)
> 字符串类型数据,一定要写 where code='100',而不是'where code=100',即将字符串作为整型传值,会导致索引失效,一定要写规范。
> 左右连接两个表的字段编码不一致,会导致索引失效
> 如果查询中没有用到聚合索引的第一个字段,则索引会失效;
> 聚合索引字段之间使用了or关键字
> 使用了select *
> 用 is null和is not null没注意字段不为空(即提前留意这个字段是否允许null,避免多余判断; 另外,如果字段允许为空,可以用is null,但不能用is not null,后者会导致索引失效)
> 使用不等号会导致索引失效
> order by索引字段顺序不当导致索引失效