常用SQL语句优化技巧总结

1 通过变量的方式来设置参数
好:
stringsql = "select * from people p where p.id = ? ";
坏:
stringsql = "select * from people p where p.id = "+id;
 
数据库的SQL文解析和执行计划会保存在缓存中,但是SQL文只要有变化,就得重新解析。
“…where p.id = ”+id的方式在id值发生改变时需要重新解析,这会耗费时间。

2 不要使用select *

使用select *的话会增加解析的时间,另外会把不需要的数据也给查询出来,数据传输也是耗费时间的,
比如text类型的字段通常用来保存一些内容比较繁杂的东西,如果使用select *则会把该字段也查询出来。

3 谨慎使用模糊查询

stringsql = "select * from people p where p.id like 'parm1%' ";
坏:
stringsql = "select * from people p where p.id like '%parm1%' ";
当模糊匹配以%开头时,该列索引将失效,若不以%开头,该列索引有效

4

用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: 
SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询;
可见用IN的SQL至少多了一个转换的过程;一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了

 

你可能感兴趣的:(数据库,sql优化,模糊查询,IN,子查询)