資料庫設計與查詢語句的優化

一劍平江湖發表於2013-11-06

一,設計優化
資料庫的設計優化基本上主要是靠索引來進行的。
建立索引的注意事項
   一般來說: 
   ①.有大量重複值、且經常有範圍查詢(between, >,< ,>=,< =)和order by、group by發生的列,可考慮建立群集索引; 
   ②.經常同時存取多列,且每列都含有重複值可考慮建立組合索引; 
   ③.組合索引要儘量使關鍵查詢形成索引覆蓋,其前導列一定是使用最頻繁的列。 


   1.多表操作在被實際執行前,查詢優化器會根據連線條件,列出幾組可能的連線方案並從中找出系統開銷最小的最佳方案。連線條件要充份考慮帶有索引的表、行數多的表;內外表的選擇可由公式:外層表中的匹配行數*內層表中每一次查詢的次數確定,乘積最小為最佳方案。 
   2.檢視執行方案的方法-- 用set showplanon,開啟showplan選項,就可以看到連線順序、使用何種索引的資訊;想看更詳細的資訊,需用sa角色執行dbcc(3604,310,302)。 
二,Sql優化查詢
   優化即where子句利用了索引,不可優化即發生了表掃描或額外開銷。 
   1.任何對列的操作都將導致表掃描,它包括資料庫函式、計算表示式等等,查詢時要儘可能將操作移至等號右邊。 
   2.in、or子句常會使用工作表,使索引失效;如果不產生大量重複值,可以考慮把子句拆開;拆開的子句中應該包含索引。 
   3.要善於使用儲存過程,它使SQL變得更加靈活和高效。 

相關文章