mysql查询优化

来源:互联网 发布:淘宝上首页要多少钱 编辑:程序博客网 时间:2024/06/10 23:36

1、不要在LIKE模式的开始位置使用通配符。

不要出于习惯而将符号%放在字符串的两侧。

如果只想找到出现在数据列开始位置的字符串,就需要一个%.假定你想找Mac开始包含的名字。如MacGre和MacDel.就需要这样:

where last_name like 'Mac%';

优化程序看到后,会使用索引找到匹配的数据行,就好像下面的表达式,这种表达式允许对last_name使用索引:

where last_name >='Mac' and last_name <'Mad'

2、避免过多使用MYSQL的自动类型转换

如:

select * from mytabl where age =4;select * from mytabl where age='4';


上面两条语句返回同样的结果,不过第二条语句效率更低,因为需要类型转换。且,如果age含有索引,那么含有类型转换的比较可能会阻止索引得到使用。
在什么情况下索引不能使用呢?看:

select * from ytabl where `name` = '7';


如果name为varchar,则索引失效。因为name数据列里可能会有很多不同的字符串在转换为数值后等于'7'.比如'7','7.0'.要想把它们都找出来,唯一的办法就是依次读取、转换,再进行比较。