2017-03-23 37 views
-3

我如何優化選擇:優化一個選擇

SELECT Id, FirstName, LastName, Country 
    FROM Customer 
WHERE (Country ="x" and Id ="y") 
    or (Country ="x1" and Id ="y1") 
    or (Country ="x2" and Id ="y2") 
    or (Country ="x3" and Id ="y3") 
    or (Country ="x4" and Id ="y4") 
    or (Country ="x5" and Id ="y5") 
+6

可能第一步是確定你正在使用的DBMS。你有'mysql'和'oracle'兩個標籤。 – Siyual

+1

然後,添加到您的問題您的表創建語句,也是它的執行計劃的輸出結果。 –

+0

定義的任何索引? – jarlh

回答

1

我會建議使用元組寫它:

SELECT Id, FirstName, LastName, Country 
FROM Customer c 
WHERE (Country, id) in (('x', 'y'), ('x1', 'y1'), . . .) 

(這應該在MySQL和甲骨文工作,但不是在所有的數據庫。 )

然後數據庫應該能夠很容易地使用Customer(Country, Id)上的索引。它也可以在原始版本中使用該索引。