我的應用程序對特定客戶執行的查詢非常緩慢。 我意識到客戶在一張桌子上有很多記錄。內部加入大表減慢查詢
查詢是這樣的
SELECT T1.Field1,BT.Field2, T3.Field3
FROM TABLE1 T1 INNER JOIN
BIGTABLE BT ON FIELDS INNER JOIN
TABLE2 T2 ON FIELDS
我注意到,在註釋中像這樣的更快的查詢證明:
SELECT T1.Field1,/*BT.Field2,*/ T3.Field3
FROM TABLE1 T1 /*INNER JOIN
BIGTABLE BT ON FIELDS*/ INNER JOIN
TABLE2 T2 ON FIELDS
所以我想這招,以減少Bigtable的大小:
--I use top 10 while the BIGTABLE contains 150000 records
SELECT top 10 *
INTO #BIGTABLE
FROM BIGTABLE
SELECT T1.Field1,BT.Field2, T3.Field3
FROM TABLE1 T1 INNER JOIN
#BIGTABLE BT ON FIELDS INNER JOIN
TABLE2 T2 ON FIELDS
DROP TABLE #BIGTABLE
執行此操作之前,我期待更快的查詢,但執行時間非常相似。 你能否建議一種研究表現的方法?
謝謝。
您可能只需要在連接中使用的列索引。 –
我不認爲150,000條記錄是一個「大」表,特別是對於SQL Server。你能發佈執行計劃嗎?可能是任何事情,但統計數據或索引可能關閉。如果您加入未索引的大型varchar字段,您也將遇到不好的時間。 –
在這裏觀看前兩部(或所有)視頻:這將幫助你大量:https://www.brentozar.com/archive/2016/10/think-like-engine-class-now-free-開源/ –