SQL查询语句优化的实用方法总结 |
本文标签:sql查询语句优化方法 查询语句的优化是SQL效率优化的一个方式,可以通过优化sql语句来尽量使用已有的索引,避免全表扫描,从而提高查询效率 。最近在对项目中的一些sql进行优化,总结整理了一些方法 。 1、在表中建立索引,优先考虑where、group by使用到的字段 。
SELECT * FROM t 优化方式:使用具体的字段代替*,只返回使用到的字段 。
SELECT * FROM t WHERE id IN (2,3) SELECT * FROM t1 WHERE username IN (SELECT username FROM t2) 优化方式:如果是连续数值,可以用between代替 。如下: SELECT * FROM t WHERE id BETWEEN 2 AND 3 如果是子查询,可以用exists代替 。如下: SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
SELECT * FROM t WHERE id = 1 OR id = 3 优化方式:可以用union代替or 。如下: SELECT * FROM t WHERE id = 1 (PS:如果or两边的字段是同一个,如例子中这样 。貌似两种方式效率差不多,即使union扫描的是索引,or扫描的是全表)
SELECT * FROM t WHERE username LIKE '%li%' 优化方式:尽量在字段后面使用模糊查询 。如下: SELECT * FROM t WHERE username LIKE 'li%' SELECT * FROM t WHERE score IS NULL 优化方式:可以给字段添加默认值0,对0值进行判断 。如下: SELECT * FROM t WHERE score = 0
SELECT * FROM t2 WHERE score/10 = 9 SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li' 优化方式:可以将表达式、函数操作移动到等号右侧 。如下: SELECT * FROM t2 WHERE score = 10*9 SELECT * FROM t2 WHERE username LIKE 'li%'
SELECT * FROM t WHERE 1=1 优化方式:用代码拼装sql时进行判断,没where加where,有where加and 。 SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值的范围内的匹配或者两个以上条件的AND连接 。 所以,我们要让我们写的查询条件尽量能够让引擎识别为扫描参数 。具体做法,就如前面提到的这些方法 。 以上就是小编为大家带来的SQL查询语句优化的实用方法总结全部内容了,希望大家多多支持脚本之家' |