SQLSERVER中如何忽略索引提示

來源:互聯網
上載者:User

標籤:style   blog   http   color   ar   os   使用   sp   strong   

原文:SQLSERVER中如何忽略索引提示

SQLSERVER中如何忽略索引提示

當我們想讓某條查詢語句利用某個索引的時候,我們一般會在查詢語句裡加索引提示,就像這樣

SELECT  id,name from TB  with (index(IX_xttrace_bal)) where bal<100

 

當在生產環境裡面,由於這個索引提示的原因,最佳化器一般不會再去考慮其他的索引,那有時候這個索引提示可能會導致查詢變慢

經過你的測試,發現確實是因為這個索引提示的關係導致查詢變慢,但是SQL伺服器已經緩衝了這條SQL語句的執行計畫,如果修改SQL語句的話可能會有影響

而且,可能不單只一條SQL語句用了索引提示,還有其他的SQL語句也用了索引提示,你不可能馬上去修改這些SQL語句的時候可以使用SQLSERVER裡面的一個trace flag

 

這個trace flag能忽略SQL語句裡面的索引提示和預存程序裡面的索引提示

不需要修改SQL語句,就可以進行效能排查

 

運行下面指令碼建立資料庫和相關索引

USE masterGOIF DB_ID(‘Trace8602‘) IS NOT NULL    DROP DATABASE Trace8602GOCREATE DATABASE Trace8602GOUSE Trace8602GOCREATE TABLE xttrace8602    (      id INT IDENTITY(1, 1)             PRIMARY KEY ,      bal INT ,      name VARCHAR(100)    )GOCREATE NONCLUSTERED INDEX IX_xttrace8602_bal_name ON xttrace8602(bal,name)GOCREATE NONCLUSTERED INDEX IX_xttrace8602_bal ON xttrace8602(bal)GOINSERT  INTO xttrace8602VALUES  ( RAND() * 786, ‘cnblogs.com/lyhabc‘ )GO 10000CREATE PROC uspFirstAS    SELECT  id ,            name    FROM    xttrace8602 TF WITH ( INDEX ( IX_xttrace8602_bal ) )    WHERE   bal < 100GO

 

現在執行下面代碼

--沒有使用跟蹤標緻EXEC uspFirst  GO

 

--使用了追蹤旗標DBCC TRACEON(8602,-1)GODBCC FREEPROCCACHEGOEXEC uspFirst GO

 

可以看到,開啟TRACEON(8602,-1) 追蹤旗標之後,SQLSERVER忽略了索引提示,利用複合索引IX_xttrace8602_bal_name 把資料查出來

而不需要額外的鍵尋找

 

這個追蹤旗標不需要你修改你的SQL語句就可以讓SQLSERVER忽略索引提示

在使用這個8602追蹤旗標之前記得先在開發環境測試好,確認是否需要忽略索引提示,以便做成效能問題

 

如有不對的地方,歡迎大家拍磚o(∩_∩)o 

 

SQLSERVER中如何忽略索引提示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.