非常牛逼的sql语句可能不用写,但是开发过程中注意些技巧,用户体验就大大提升。下面总结的一些方法,有需要的可参考:
1.查询条件尽量使用"="而非"<>"
"<>"意味着放弃索引进行全表扫描。
2.尽量多使用连接查询(join)避免子查询
3.in或者not in要慎重,否则会导制全表查询,如用到删除语句上,不小心数据给删了(以前同事搞过这事)
select * from tb_user where user_no in (44,45,46)
改成
select * from tb_user where user_no between 44 and 46
4.使用order by时尽量加上索引,去掉没有的字段
由于order by基于查询结果集进行排序,如果数据量大,会影响性能
5.关于exists,in的使用
子查询大的用exists,子查询小的用in,这样效率会很高
6.确定只有一条数据时,使用limit 1
limit1可以避免全表查询,找到结果集就不在扫描了
7.不要在where查询字段做表达式操作
select * from tb_user where age/2=20;
改为
select * from tb_user where age=2*20;
8.select *和select 列的使用
二者基本差别不大,但是如果表中有的字段数据量特别大,比如大文本,能不查询出就不要,减少网络传输;同时从代码层面考虑,如果新加一个字段作为预留字段,实际并没多大意义,select * 返回就没必要了,因为程序用到的列者固定的。
9.模糊查询使用
别用双模糊(全表查询),可考虑单模糊查询 ,oracle数据库时可用instr函数
select * from tb_user where user_name like '%卫%'
改为
select * from tb_user where user_name like '%卫'
10.使用Limit实现分页
不仅提高性能,还提高了数据库与应用的传输
11.索引的使用
在使用索引字段作为查询条件时,如果是复合索引,必须使用索引的第一个字段作为查询条件,否则不会用到索引
希望以上对大家有帮助!~