一,用什么字段做索引较好?

> 整型字段最好

> 如果要用字符索引,最好选用定长字段

> 时间字段同理,也要固定长度(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索引字段顺序不当导致索引失效

04-03 05:51