amelast_
amebeillclito
无法使用索引
改为:selectfromemployeewherefirst_
amesubstrbeillclito
1i
strbeillclito
1a
dlast_
amesubstrbeillclito
i
strbeillclito
1
f则可以使用索引5、不同类型的索引效能是不一样的,应尽可能先使用效能高的比如:数字类型的索引查找效率高于字符串类型,定长字符串char,
char的索引效率高于变长字符串varchar
varchar的索引。应该将whereuser
ame张三a
dage20改进为whereage20a
duser
ame张三注意:
此处,SQL的查询分析优化功能可以做到自动重排条件顺序,但还是建议预先手工排列好。
6、尽量不要使用is
ull与is
ot
ull作为查询条件任何包含
ull值的列都将不会被包含在索引中,如果某列数据中存在空值,那么对该列建立索引的性能提升是值得怀疑的,尤其是将
ull作为查询条件的一部分时。建议一方面避免使用is
ull和is
ot
ull另一方面不要让数据库字段中存在
ull即使没有内容,也应利用缺省值,或者手动的填入一个值,如’’空字符串。
7、某些情况下IN的作用与OR相当,且都不能充分利用索引例:表stuff有200000行,id_
o上有非群集索引,请看下面这个SQL:selectcou
tfromstuffwhereid_
oi
′0′′1′(23秒)
where条件中的′i
′在逻辑上相当于′or′,所以语法分析器会将i
′0′′1′转化为id_
o′0′orid_
o′1′来执行。我们期望它会根据每个or子句分别查找,再将结果相加,这样可以利用id_
o上的索引;但实际上它却采用了