2010年4月2日 星期五

轉貼 Left outer join vs NOT EXISTS

大table left outer join 小table, 排除不存在於小table的筆數時,用not exists效能比較好,尤其是當JOIN條件為index column

甚少用到exists , not exists語法, 這篇實測文章給了我一點新想法.

http://www.sqlservercentral.com/blogs/sqlinthewild/archive/2010/3/23/left-outer-join-vs-not-exists.aspx

作者結論:
The LEFT OUTER JOIN … IS NULL method is slower when the columns are indexed and it’s perhaps not as clear what’s happening. It’s reasonably clear what a NOT EXISTS predicate does, with LEFT OUTER JOIN it’s not immediately clear that it’s a check for non-matching rows, especially if there are several where clause predicates.

最近和小朋友一直在OPTIMIZE SQL SERVER 2000, 發現最大的瓶頸在DISK I/O上, 將幾個大TABLE的FILEGROUP上到SAN後,效能改善了至少2/3, 原先的硬碟是一組RAID 5+1,跑了5年後,在不到二個月的時間陸續掛了二顆硬碟 ,DISK QUEUE一直處在00%滿載亮紅燈中...

幾個主要的大table在多人同時間做insert / delete /select  時,整台主機都被卡住了,動也動不了.將大TABLE的FILEGROUP上到SAN後,至少主機不會整個卡住什麼都不能做.

接著開始看使用者自已寫的RDL表, 千奇百怪的語法都有. 很佩服SQL 2000還挺耐操的, 操不死,頂多就是喘了點.

DBA的工作真偉大, 光效能精進就是一件又苦又漫長的等待

給小朋友和自已鼓鼓掌.,

小朋友給他多一點掌聲, 他比較適合搞技術, 遇上業務邏輯的事,總讓我發火..

接下來調整tempdb...

沒有留言:

張貼留言

pdf.js 無法顯示部份字

有個檔案在pdf viewer套件中無法顯示內容,但下載檔案後使用工具又可以正常顯示。 本來以為是套件版本太舊的原因,於是去下載pdf viewer套件 https://github.com/mozilla/pdf.js 更新後還是一樣。 覺得應是字型缺漏的問題,於是用PDF-X...