作者adrianshum (Alien)
看板Programming
标题Re: 请问如何改SQL写法使效能改善.....
时间Sun Mar 9 01:10:52 2008
※ 引述《[email protected] ( )》之铭言:
: 请问一下,我有段sql执行起来会把伺服器资源
: 吃到99%且做了一个多小时还做不完。我只觉得
: 这段sql join 了太多table(6个)外,我没有方向
: 该往哪个方面去找寻它效能极差的原因,更别说
: 要改写它了,可否请高人指点一下......谢谢!!
之前写 Oracle 的 SQL, DBA 有给过一点 SQL Tuning 基本教学,
可以参考一下:
1) index 要留心,join 的 column 是不是已经设好 index?
2) 某些很特别的情况下, Subquery 反而会比 join 好,但大部份都请尽量 join
3) 尽量用 Union All 而不要用 Union
4) 不要用 in(..), 用 exist(..)
e.g.
select a.x from A a where a.y not in (select z.y from Z z)
改成
select a.x from A where not exist (select 1 from Z z where z.y = a.y)
之类
5) filtering criteria 尽量把能做出大量筛选的放在前面
6) 把数据量少的table 作为 driving table
alien
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.78.81.71
1F:推 mingtai1:推 140.109.16.201 03/17 01:22