1、避免在索引上使用计算
DBMS的优化器将不会使用索引而使用全表查询
效率低:
select * from user where salary*22>11000(salary是索引列)
效率高:
select * from user where salary>11000/22(salary是索引列)
2、使用表的别名
当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个列名上。这样就可以减少解析的时间并减 少哪些友列名歧义引起的语法错误。
3、用union all替换union
当SQL语句需要union两个查询结果集合时,即使检索结果中不会有重复的记录,如果使用union这两个结果集 同样会尝试进行合并,然后在输出最终结果前进行排序,因此如果可以判断检索结果中不会有重复的记录时候,应该用union all,这样效率就会因此得到提高。
4、避免对字段使用is null判断
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,
然后这样查询:
select id from t where num=0
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
5、对于连续的数值,能用 between 就不要用 in 了
select id from t where num between 1 and 3
6、当一个事务中需要锁多个行,要把最可能造成锁冲突、最可能影响并发度的锁的申请时机尽量往后放。 放到事物最后面。减少锁等待时间
7、将用了索引,区分度高的查询条件写在where后面