赞
踩
目录
1、尽量避免全表扫描,首先考虑在where 及 order by 涉及的列上建立索引
2、在经常需要进行检索的字段上创建索引
在 where 条件中,避免直接对索引列进行计算(这会导致索引失效);
使用 in 和 exists 时,一般使用 exists ,因为 in 不走索引
like '%aaa%' 不走索引, like 'aa%' 走索引
使用参数化SQL ,预编译SQL语句,提高查询速度,防止sql注入。
DBMS一般采用自下而上的顺序解析where字句,根据这个原理,表连接最好写在其他where连接之前,这样可以过滤掉最大数量记录,即在sql语句中,where 条件判断时,若涉及到多表,则先写表连接,在进行条件判断。
每次执行一条SQL语句的时候都要建立网络连接、进行权限校验,进行SQL语句的查询优化、发送执行结果,非常耗时,将多条SQL进行压缩可减少时间的消耗
避免使用having字句,因为having只会在检索出所有记录之后才对结果集进行过滤,而where是在聚合前筛选结果,能减少开销
连接多个表时,使用表的别名并把别名前缀与每个列名上,可以减少解析时间和语法错误,在涉及到多表时,列名重复是很常见的事,所以在编写sql语句时,给数据表取一个别名,这样即好区分列的所属关系,又简化了sql语句的编写。
union 和 union all 的性能差距很大,union 在对两个结果集进行合并的时候会去除重复行,对数据进行排序,而 union all 只是将两个结果集进行简单合并,在时间消耗上远远小于使用 union 的语句,在数据量小的时候可能感觉不少很深,但对大量数据来说,就会有很大的变化。
使用临时表暂存结果可以减少对主表的访问,直接查询临时表
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。