怎么写出高性能的SQL?

首先算一道数学题,如果你写的一条SQL一次查询耗时100毫秒,循环100次就是10s,总耗时 = 单次耗时 × 次数。故提速从两个方面着手,一个是减少查库次数(往往能立竿见影),另一个是写出高性能的SQL。怎么写出高性能的SQL呢?

  • 技巧:用set statistics time ON检查SQL耗时,用set statistics io ON检查SQL所产生的读和写。把on改为off是关闭监控。
  • 技巧:where条件尽量明确,尽可能减少返回的条数
set statistics time ON 
SELECT  TOP 1 Department FROM people WHERE AssessID=495  and Department_No='504' --2毫秒
SELECT  Department FROM people WHERE AssessID=495  and Department_No='504' --37毫秒
SELECT  Department FROM people WHERE Department_No='504' --61毫秒
  • 技巧:能明确哪几列就不用‘*’。
/*people表全表163413 行*/
SELECT * FROM people--8295 毫秒
SELECT Department_No FROM people--80 毫秒
  • 优化目标
  • 1.减少 IO 次数,数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。
  • 2.降低 CPU 计算,除了 IO 瓶颈之外,需要考虑的就是 CPU 运算量的优化了。order by, group by,distinct … 都是消耗 CPU 的大户。
  • CTRL+L看查所利用的索引,表扫描次数(这两个对性能影响最大)。
  • 为经常查询的字段建索引!但也不能过多。insert和delete等操作会导致索引重排,增加数据库负担。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值