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'.要想把它们都找出来,唯一的办法就是依次读取、转换,再进行比较。