Alternative zu WÄHLEN .. IN (..)
Ich habe Tabelle mit 3 Spalten: id (der person), die Stadt (die person, die besucht wird) und das Datum (des Besuches).
Muss ich auswählen, um alle Menschen (deren ids), die in der Stadt Los Angeles, die zwischen bestimmten Zeitpunkt, die waren auch in der Stadt New York auf irgendeinem anderen bestimmten Zeitpunkt.
Hier ist ein Beispiel für die Abfrage, die ich jetzt ausführen:
SELECT DISTINCT id
FROM places
WHERE date >= '2011-03-18' AND
date < '2011-03-19' AND
city = 'los angeles' AND
id IN (SELECT DISTINCT id
FROM places
WHERE date >= '2011-03-15' AND
date < '2011-03-16' AND
city = 'chicago'
GROUP BY id);
Kann ich etwas auch?
Gibt es irgendwelche anderen Abfrage, die ich nutzen kann? Das wählen ist viel zu langsam.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mithilfe einer join (mit alias) anstelle einer Unterabfrage ausführen sollte, besser:
Zuerst müssen Sie sicherstellen, dass Sie die relevanten Indizes im Ort. In diesem Fall ist es wahrscheinlich ein index mit zwei Spalten Datum und die Stadt. Danach können Sie Ihre Abfrage und vergleichen Sie die performance der Abfragen, die hier vorgeschlagen werden. Inner join schneller sein als das, was Sie bereits haben.
Meine version funktioniert in SQL Server. Ich könnte die Arbeit in anderen DBMS als gut.
Versuchen die inner-join -
Überprüfen Sie die Indizes in der Tabelle und sehen, wenn Sie irgendwelche auf Stadt und Datum.