我们从三个方向来分享一下sql常见优化
1.*优化select查询
1.保证不查询多余的列与行。
尽量避免select * 的存在,使用具体的列代替*,避免多余的列使用where限定具体要查询的数据,避免多余的行使用top,distinct关键字减少多余重复的行。
2.慎用distinct关键字
distinct在查询一个字段或者很少字段的情况下使用,会避免重复数据的出现,给查询带来优化效果。但是查询字段很多的情况下使用,则会大大降低查询效率。原因是当查询很多字段时,如果使用distinct,数据库引擎就会对数据进行比较,过滤掉重复数据,然而这个比较,过滤的过程则会毫不客气的占用系统资源,cpu时间。
3.慎用union关键字
union具有去重的操作,增加了计算时间。union all不需要去重,但会包含相同记录。同样功能下,首选union all操作。
4.判断表中是否存在数据
例如 select count(*) from product
select top(1) id from product
比较首选后者。
5.连接查询的优化
首先你要弄明白你想要的数据是什么样子的,然后再做出决定使用哪一种连接,这很重要。各种连接的取值大小为:a.内连接结果集大小取决于左右表满足条件的数量 b.左连接取决与左表大小,右相反。c.完全连接和交叉连接取决与左右两个表的数据总数量
*2.*insert插入优化
insert into select批量插入,明显提升效率。所以以后尽量避免一个个循环插入。
***3.优化修改删除语句
如果你同时修改或删除过多数据,会造成cpu利用率过高从而影响别人对数据库的访问。如果你同时修改或删除过多数据,会造成cpu利用率过高从而影响别人对数据库的访问。折中的办法就是,分批操作数据。
delete table_name where id<1000