SQLServer常用的執行計算 資料訪問操作符

2021-08-14 19:03:41 字數 1088 閱讀 1545

1.scan及示例分析

scan依據表的不同,可以分為table scan,cluster index scan,以及針對非聚集索引的non-clustered index scan這三種操作。

聚集索引掃瞄(cluster index scan)將表中所有資料行都存在於聚集索引的葉節點中,所以,聚集索引掃瞄相當於將整個資料都取出來了。

index scan發生在檢索的資料都包含在已經定義好的索引之中,這樣就不需要掃瞄整個表,只需要將索引中的資料取出便可,這樣的索引被稱為覆蓋索引。由於non-clustered index所占用的空間比cluster index小,它的i/o成本會更低一些,所以查詢優化器優先考慮使用index scan來查詢這些資料。

在oltp資料庫中,scan操作被認為是效能的最大殺手,因為它不僅需要等待大量的磁碟i/o,還需要消耗很多記憶體來儲存相關的資料。因此,在開發業務系統時應該注意,oltp系統中應當避免大資料量的搜尋,如果有一些資料集確實非常大,不妨使用分頁演算法。在資料庫中可以使用儲存過程來實現分頁演算法,以避免大量的資料掃瞄操作。

2.seek及示例分析

查詢(seek)操作發生在索引上,他可以通過索引定位到具體的資料。依據索引的不同,可以區分為聚集索引查詢和非聚集索引查詢兩種型別。

聚集索引查詢發生在對聚集索引字段進行where條件過濾的情況下

非聚集索引查詢發生在對非聚集索引字段進行where條件過濾的情況下。

3.bookmark lookup及示例分析

key lookup操作是bookmark lookup操作的一種。由於命名上的問題,姑且將lookup稱為標籤查詢吧,與seek操作區分開來。標籤查詢發生在使用了非聚集索引的語句中,用於查詢不包含在當前索引的字段。例如select typeid,name from book where typeid = 2,typeid是乙個非聚集索引,name沒有索引,此時通過index seek操作符找出索引資料後,還要通過標籤查詢name欄位。

注意:在語句存在效能瓶頸的情況下,如果有掃瞄操作或者標籤查詢操作,都會被認為是有問題的,並且問題的產生原因是索引缺失,或者索引沒有正確的覆蓋到語句中。但是也還有一些別的可能,例如在索引自動斷上應用了函式或者新增了計算,這些都將導致索引沒有辦法被正常使用。

如何為執行在SAP的SQL Server計畫效能

我如何為執行在sap上的sql server計畫效能?問 我們想要為我們的資料庫安裝儲存區域網路 san 整個的資料庫尺寸 mdf 將會在下面的兩年裡面增長到200gb,而整個日誌檔案尺寸 ldf 不會超過50gb。tempdb大概是在10到15個gb。答 我將會使用你的建議從效能的角度來判斷以下的...

mysql 生成執行計畫 MySQL的執行計畫

mysql的執行計畫 什麼是執行計畫?執行計畫通常是開發者優化sql語句的第一步。mysql在解析sql語句時,會生成多套執行方案,然後內部會進行乙個成本的計算,然後通過優化器選擇乙個最優的方案執行,然後根據這個方案會生成乙個執行計畫。開發者通過檢視sql語句的執行計畫,可以直觀的了解到mysql是...

Sql Server的執行計畫

前一篇總結了sql server profiler,它主要用來監控資料庫,並跟蹤生成的sql語句。但是只拿到生成的sql語句沒有什麼用,我們可以利用這些sql語句,然後結合執行計畫來分析sql語句的效能問題,這才是我們的最終目的,那麼如何使用執行計畫呢?我準備從以下幾點來總結。如何啟動執行計畫 執行...