-
尽量用EXISTS代替IN
-
使用慢日志,explain记录那些查询很慢的SQL语句。
-
JOIN操作中,使用小的结果驱动大的结果。
-
分页在基数较大时,尽量使用between而不是limit
-
尽量不要使用rand获取随机条数记录
6.count(列名)表示多少个不为NULL的记录(不完整),使用COUNT(*,1)整个结果集有多少条记录
-
尽量不要做无谓的排序操作
-
出现了局部变量时,可以强制使用索引 with(index(索引名))
-
尽量避免对字段使用表达式操作,如WHERE NUM/2=100,替换成NUM=100*2
-
避免全表扫描,考虑在WHERE和ORDER BY中使用到的列建立索引
-
尽量避免在WHERE子句中使用NULL值判断,这样会使DBMS放弃使用索引进行全表扫描,可以设计不影响业务的默认值.
-
尽量避免在WHERE子句中使用 != 或<>,也会导致DBMS放弃使用索引进行全表扫描,可以使用<,<=,=,>=,between in。
-
尽量避免在WHERE子句中使用OR来连接,会导致放弃使用索引。可以使用UNION ALL,将查询的记录合并。
-
能用between实现就不要使用in
-
LIKE避免使用%%查询,不会使用索引查询。xxx%会使用索引。
-
查询时尽量不要使用*作为结果列,仅列出需要查询的字段,节省应用服务器的内存。因为查询到的列都保存在程序的内存中。
-
在WHERE中,尽量避免做列运算和函数,会走索引而不是全表扫描。