婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL 查詢性能優化 解決書簽查找

SQL 查詢性能優化 解決書簽查找

熱門標簽:山西語音外呼系統價格 威海智能語音外呼系統 溫州語音外呼系統代理 北京辦理400電話多少 400電話申請需要開戶費嗎 西安青牛防封電銷卡 重慶防封電銷機器人供應商 南京電銷外呼系統運營商 智能語音外呼系統哪個牌子好
先來看看什么是書簽查找:

    當優化器所選擇的非聚簇索引只包含查詢請求的一部分字段時,就需要一個查找(lookup)來檢索其他字段來滿足請求。對一個有聚簇索引的表來說是一個鍵查找(key lookup),對一個堆表來說是一個RID查找(RID lookup)。這種查找即是——書簽查找。

   書簽查找根據索引的行定位器從表中讀取數據。因此,除了索引頁面的邏輯讀取外,還需要數據頁面的邏輯讀取。

從索引的行定位器到從表中讀取數據這之間會產生一些額外的開銷,本文就來解決這個開銷。

先看下我的測試表結構:

其中可以看出 有一個 聚簇索引 PK_UserID 和一個 非聚簇索引IX_UserName。

看看產生書簽 查找的效果:

select UserName,Gender from dbo.UserInfo where UserName='userN600'

按上面的 SQL 產生執行計劃 可以看出, 會產生一個書簽查找(Key Lookup),如下圖



如果把上面的 SQL 改寫成

select UserName from dbo.UserInfo where UserName='userN600'


可以看出 書簽查找 沒有了。

本SQL 產生書簽查找的 主要原因是 本SQL 優化器會選擇 非聚簇索引IX_UserName,來執生SQL 。IX_UserName 索引不包含 Gender 這個字段 于是產生個從索引到 數據表的 一個 查找 即 書簽查找。
解決書簽查找:

方法一、使用一個 聚簇索引

    對于聚簇索引, 索引的葉子頁面和表的數據頁面相同,因此,當讀取聚簇索引 鍵列的值時,數據引擎可以讀取其它列的值而不需要任何行定位,這樣就解決了書簽查找。
     對于這句SQL ( select UserName,Gender from dbo.UserInfo where UserName='userN600')解決了書簽查找的辦法就是在UserName 上 建聚簇索引 ,因為一個表只有一個聚簇索引 ,這就意味著刪除現有聚簇索引(PK_UserID),將會造成其它從表 中的外鍵約束 要發生更改,這需要考一些相關的工作,可能嚴重影響依賴于現有聚簇索引的其它查詢。

方法二、使用一個 覆蓋索引

    覆蓋索引 是在所有為滿足SQL 查詢不用到達基本表所需的列 建立的非聚簇索引。如果查詢遇到一個索引并且完全不需要引用底層數據表,那么 該索引可以被認為是 覆蓋索引。
      對于這句SQL ( select UserName,Gender from dbo.UserInfo where UserName='userN600') 解決書簽查找的辦法就是 在非聚簇索引IX_UserName 里包含 Gender 字段。
      也就是在 建索引時 用INCLUDE 語句,具體操作如下

用INCLUDE 最好在 以下情況下使用:
        1、不希望增加索引鍵的大小,但是仍然可以建一個 覆蓋索引;
        2、打算索引一種不能被索引的數據類型(除了文本、NTEXT和圖像);
        3、已經超過了一個索引的關鍵字列的最大數量

方法三、使用 索引連接

  索引連接 是使用多個索引之間一個索引交叉來完全覆蓋一個查詢。如果覆蓋索引變的非常寬,那么就可以考慮索引連接。
    對于這句SQL ( select UserName,Gender from dbo.UserInfo where UserName='userN600' and Gender=1)可以在 Gender 上 建一個非聚簇索引就行了。
    對于這個例 子,可能 SQL 優化器并沒有同時 選 用非聚簇索引IX_UserName 和 我們新建立在Gender 上的索引,這時我們可以告知 SQL 優化器 同時使用 這個兩上索引,操作如下
      select Gender,UserName from UserInfo with(index (IX_Gender,IX_UserName)) where UserName='jins' and Gender=0

好了就寫這么多吧.
您可能感興趣的文章:
  • 1億條記錄的MongoDB數據庫隨機查詢性能測試
  • MongoDB查詢性能優化驗證及驗證
  • Sql語句與存儲過程查詢數據的性能測試實現代碼
  • 數據庫查詢性能需注意幾點經驗
  • MongoDB數據庫查詢性能提高40倍的經歷分享

標簽:金昌 新余 中衛 河源 濟寧 黃山 宜春 貸款群呼

巨人網絡通訊聲明:本文標題《SQL 查詢性能優化 解決書簽查找》,本文關鍵詞  SQL,查詢,性能,優化,解決,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL 查詢性能優化 解決書簽查找》相關的同類信息!
  • 本頁收集關于SQL 查詢性能優化 解決書簽查找的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 双鸭山市| 双峰县| 会昌县| 鄂托克旗| 通化市| 封开县| 衡水市| 小金县| 南宁市| 安西县| 郁南县| 萍乡市| 山阴县| 兴隆县| 苍梧县| 依安县| 北安市| 三门县| 青铜峡市| 桦南县| 西藏| 阿尔山市| 九台市| 尚志市| 桂平市| 民丰县| 阳泉市| 保亭| 遂昌县| 通山县| 菏泽市| 固始县| 贡山| 醴陵市| 霸州市| 五寨县| 奉贤区| 开平市| 广昌县| 邵阳市| 榆社县|