2017-03-23 4 views
-3

Wie kann ich meine wählen optimieren:optimize a Wählen

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

Wahrscheinlich ist der erste Schritt herauszufinden, welche DBMS Sie verwenden. Sie haben sowohl "mysql" als auch "oracle" markiert. – Siyual

+1

Dann fügen Sie zu Ihrer Frage Ihre Tabelle create-Anweisung und auch ein Ausgabeergebnis eines Ausführungsplans hinzu. –

+0

Jeder Index definiert? – jarlh

Antwort

1

Ich würde vorschlagen, es zu schreiben Tupeln mit:

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

(Dies sowohl in MySQL und Oracle arbeiten sollte, aber nicht in allen Datenbanken.)

Dann sollte die Datenbank in der Lage sein, einen Index auf Customer(Country, Id) zu verwenden. Es könnte in der Lage sein, diesen Index auch mit der ursprünglichen Version zu verwenden.