SQL Server 2008 高階查詢優化概念
Microsoft SQL Server 使用記憶體中的排序和雜湊聯接技術執行排序、交集、並集、差分等操作。SQL Server 利用這種型別的查詢計劃支援垂直表分割槽(有時稱為分列儲存)。
SQL Server 使用三種型別的聯接操作:
Nested Loops 聯接
合併聯接
雜湊聯接
如果一個聯接輸入很小(不到 10 行),而另一個聯接輸入很大而且已在其聯接列上建立了索引,則索引 Nested Loops 連線是最快的聯接操作,因為它們需要的 I/O 和比較都最少。有關 Nested Loops 的詳細資訊,請參閱瞭解巢狀迴圈聯接。
如果兩個聯接輸入並不小但已在二者聯接列上排序(例如,如果它們是通過掃描已排序的索引獲得的),則合併聯接是最快的聯接操作。如果兩個聯接輸入都很大,而且這兩個輸入的大小差不多,則預先排序的合併聯接提供的效能與雜湊聯接相近。但是,如果這兩個輸入的大小相差很大,則雜湊聯接操作通常快得多。有關詳細資訊,請參閱瞭解合併聯接。
雜湊聯接可以有效處理未排序的大型非索引輸入。它們對複雜查詢的中間結果很有用,因為:
中間結果未經索引(除非已經顯式儲存到磁碟上然後建立索引),而且通常不為查詢計劃中的下一個操作進行適當的排序。
查詢優化器只估計中間結果的大小。由於對於複雜查詢,估計可能有很大的誤差,因此如果中間結果比預期的大得多,則處理中間結果的演算法不僅必須有效而且必須適度弱化。
雜湊聯接可以減少使用非規範化。非規範化一般通過減少聯接操作獲得更好的效能,儘管這樣做有冗餘之險(如不一致的更新)。雜湊聯接則減少使用非規範化的需要。雜湊聯接使垂直分割槽(用單獨的檔案或索引代表單個表中的幾組列)得以成為物理資料庫設計的可行選項。有關詳細資訊,請參閱瞭解雜湊聯接。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-520802/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server 2008 查詢優化SQLServer優化
- sql-server高階查詢SQLServer
- 優化SQL Server 2008的查詢效能優化SQLServer
- SQL Server 查詢優化功能SQLServer優化
- SQL Server 2008 實施查詢優化建議SQLServer優化
- MS SQL Server查詢優化方法SQLServer優化
- MS SQL Server查詢優化方法SQLServer優化
- SQL高階查詢SQL
- SQL Server調優系列進階篇(查詢優化器的執行方式)SQLServer優化
- MS SQL SERVER索引優化相關查詢SQLServer索引優化
- 深入淺出的SQL server 查詢優化SQLServer優化
- 優化SQL Server資料庫查詢方法優化SQLServer資料庫
- sql之20高階查詢SQL
- SQL查詢優化SQL優化
- 《MSSQL2008高階教程》之四“SQL優化”SQL優化
- SQL Server查詢速度慢原因及優化方法SQLServer優化
- 我如何調優SQL Server查詢SQLServer
- 優化sql查詢速度優化SQL
- 效能優化部分——高階SQL優化2優化SQL
- SQL語言基礎(高階查詢)SQL
- SQL Server查詢速度慢的原因及優化方法SQLServer優化
- SQL Server資料庫查詢優化的方法總結SQLServer資料庫優化
- Sql Server 的引數化查詢SQLServer
- 高階查詢
- SQL查詢優化的方法SQL優化
- 優化sql提高查詢速度優化SQL
- MySQL 優化五(關聯查詢子查詢以及 in 的效率問題)(高階篇)MySql優化
- Microsoft SQL Server查詢最佳化方法ROSSQLServer
- Mongodb高階查詢MongoDB
- ❖ MongoDB 高階查詢MongoDB
- SQL Server 2008 效能監視和優化SQLServer優化
- SQL Server 2008資料庫引擎優化SQLServer資料庫優化
- 十七、Mysql之SQL優化查詢MySql優化
- SQL查詢優化常見方法SQL優化
- SQL Server 2008將計劃指南與查詢匹配SQLServer
- SQL Server 查詢分解SQLServer
- SQL Server資料庫查詢速度慢原因及優化方法SQLServer資料庫優化
- SQL Server 2000 中查詢優化器使用的統計SQLServer優化