0
我有以下兩個表:SQL:關於查詢優化的問題
CREATE TABLE Test_Main
(
[ID] INT IDENTITY ,
[TypeID] INT ,
[BookID] INT
)
CREATE TABLE Test_Second
(
[TypeID] INT ,
[BookID] INT ,
[Value] INT,
)
INSERT INTO Test_Main(TypeID, BookID)
SELECT 1, 10
UNION
SELECT 2, 31
UNION
SELECT 3, 51
UNION
SELECT 4, 81
INSERT INTO Test_Second(TypeID, BookID, Value)
SELECT 1, 0, 30
UNION
SELECT 2, 31, 45
UNION
SELECT 3, 51, 66
UNION
SELECT 4, 0, 22
,我有以下查詢:
SELECT
ID ,
Test_Main.TypeID ,
Test_Main.BookID
FROM
Test_Main
INNER JOIN
Test_Second ON Test_Main.[TypeID] = Test_Second.[TypeID]
WHERE
Test_Main.BookID = CASE WHEN (Test_Main.BookID = 2 OR Test_Main.BookID = 3)
THEN Test_Second.BookID
ELSE Test_Main.BookID
END
這個查詢是給下面的輸出:
ID TypeID BookID
----------- ----------- -----------
1 1 10
2 2 31
3 3 51
4 4 81
現在,當我的表有100萬行時,我懷疑我的case子句會導致性能問題。我如何優化查詢以使用索引查找。上述查詢的索引應該是什麼?
你認爲'(TypeID,BookID)'上的compoun索引會被使用嗎(並有助於提高效率)? –
@ypercube:它將用於'TypeID'上的查詢 - 但添加'BookID'並不真正有幫助,我會想;這個複合索引可能**不能用於單獨使用'BookID'的查詢。 –