常用的sql优化

**1、**在表中建立索引,优先考虑where、group by使用到的字段(较频繁地作为查询条件且唯一性不太差),不会再where中用到的字段不建立索引,因为建立索引也需要系统的开销。

**2、**减少使用 * ,用列名代替

select * from user;

要写成 select userID, userName, userSalary from user;

因为在使用 * 的时候,数据库还得查询数据字典,进而解析得到列名,而直接写出列名效率会更高些。

**3、**避免在开头使用模糊查询(%),该查询数据库引擎会放弃索引进行全表扫描。

**4、**避免进行NULL值判断,可以给字段添加默认值0,对0值进行判断;

也不要给数据库留NULL,使用NOT NULL填充。(否则会进行全表扫描,影响效率)

**5、**避免在where条件中等号的左边进行表达式或函数操作,可以将表达式或函数移到等号右边。(否则会全表扫描)

**6、**当使用where子句连接的时候,要把能过滤掉最大数量记录的条件写在最右边。(因为where是从右往左解析的)

**7、**需要删除所有记录的时候,用truncate而不用detele

因为delete删除表的时候,会扫描整个表再一条一条删除;

而truncate会一次性删除整个表的所有内容,不进行扫描,效率高。

**8、**当where和having都用的时候,先用where,再用having;where先过滤(数据量变少),再分组,效率高。

**9、**避免使用in和not in,会导致全表扫描

优化方式:如果是连续数值,用between代替;如果是子查询,用exists代替。

**10、**如果表名或列名过长,就使用别名,因为长的表名和列名也会消耗扫描时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值