2012-07-31 21 views
0

我怎樣才能通過查詢執行計劃時,鍵查詢進入查詢中的目標?我不知道到底通過觀察尋求謂詞,請幫我在這我怎樣才能提高效率的關鍵查找和表掃描在我的查詢在sql服務器

在表中定位到哪些特定的鍵在這裏下面我貼我的查詢執行計劃(鍵查找)

enter image description here

請找我現在用

SELECT 
    CONVERT(VARCHAR(6), CTC_VALUE_DATE, 12) AS CTC_VALUE_DATES , 
    MCURR.CURRENCY_CODE, 
    FTS_CUSTOMER_TRAN_CONTROL.*, 
    MCURR.* 
FROM 
    FTS_CUSTOMER_TRAN_CONTROL 
INNER JOIN 
    @TEMPTABLE TEMP ON FTS_CUSTOMER_TRAN_CONTROL.CTC_PACKAGE_ID = TEMP.PACKAGEID 
LEFT JOIN 
    MASTER_CURRENCY AS MCURR ON MCURR.CURRENCY_ID = FTS_CUSTOMER_TRAN_CONTROL.CTC_CURR_CODE  
WHERE 
    CTC_GEN_REFID = @REFIDS 
+1

如果你做了一個'SELECT *',那麼SQL Server將不得不去查看實際的表數據(使用昂貴的'Key Lookup'),因爲你正在請求**所有列**。關於這一點你可以做的不多 - 除了不使用'SELECT *'**而是指定一個實際需要的小列列表。 – 2012-07-31 16:39:51

+1

你真的需要兩個表中的*嗎?這可能是關鍵查找的原因。爲什麼不重新編寫查詢,以便只需提取需要的列?那麼你可以優化索引... – 2012-07-31 16:40:02

+0

另外:'表掃描'表明你沒有該表上的聚集索引。這很糟糕 - 您應該**總是**在「真實」數據表中擁有一個**好的聚集索引(例如,在「INT IDENTITY」列中)。 – 2012-07-31 16:48:30

回答

0

如果你必須避免的關鍵詞查詢,那麼你將不得不只選擇你所需要的列,也嘗試創建您在塞萊使用TE列覆蓋索引查詢克拉。

相關問題