1、在表中建立索引,优先考虑where,group by使用到的字段
2、尽量避免使用select ,返回无用的字段会降低查询,使用具体的字段代替
3、尽量避免使用 in 和 not in ,使用between代替
原语句:select * from t where in (1,2,3)
优化:select * from t between 1 and 3
4、尽量避免使用or,因为它会导致数据库放弃索引进行全表扫描
select * from t where id=1 or id=3
优化: select * from t where id=1 union select * from t where id=1
如果union左右两边你的字段是同一个,则效率差不多,前者扫描的全表,后者扫描的是索引
5、尽量避免在开头模糊查询,会导致数据库放弃索引进行全表扫描
select * from t where username like '%man%'
优化:select * from t where username like 'man%'
尽量在字段后边使用模糊查询
6、尽量避免进行null值判断,会导致数据库放弃索引进行全表扫描
select * from t where score is null
优化: select * from t where score = 0
给字段添加默认值(0),对0进行判断
7、尽量避免在where条件中等号的左侧进行,表达式,函数操作
select * from t where score/10 = 9
优化: select * from t where score = 10*9
在等号的右侧进行
8、当访问量大时,避免使用where 1=1,通常为了方便拼接查询条件,会默认使用该条件
9、尽量使用数字型字段
10、尽可能的使用varchar代替char,一是节省空间,二是对于查询来说,显然较小的字段搜索效率要高
11、 尽量避免向客户端返回大量数据,分页获取
12、尽量避免大事务操作,提高系统并发能力