-
使用索引,在where或order by后面涉及的列上建立索引
-
避免在where子句中判断null,这将导致进行全表扫描;解决:可以通过0代替null
-
避免在where子句中使用!=或者<>,这将导致进行全表扫描
-
避免在where子句中使用or,这将导致进行全表扫描;解决:使用联合查询
-
避免在where子句中使用in和not in,这将导致进行全表扫描
-
下面的查询也将导致全表扫描:select id from t where name like ‘%李%’若要提高效率,可以考虑全文检索。
-
应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100-- 应改为: select id from t where num=100*2 -
应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where substring(name,1,3)=’abc’ -- name以abc开头的id应改为: select id from t where name like ‘abc%’ -
不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。