Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

UNION vs DISTINCT in der Leistung

Es hängt von der Frage ab – ohne die Komplexität der Fragen A, B oder C zu kennen, kann man sie nicht beantworten, also ist es am besten, ein Profil zu erstellen und dann auf dieser Grundlage zu urteilen.

Allerdings... Ich würde mich wahrscheinlich trotzdem für eine Gewerkschaft entscheiden:Ein temporärer Tisch kann ziemlich teuer sein, besonders wenn er groß wird. Denken Sie daran, dass Sie mit einer temporären Tabelle explizit zusätzliche Operationen und damit mehr E/A erstellen, um das Festplattensubsystem zu belasten. Wenn Sie eine Auswahl vornehmen können, ohne auf eine temporäre Tabelle zurückzugreifen, geht das (wahrscheinlich) immer schneller.

Es gibt bestimmt eine Ausnahme (oder sieben) von dieser Regel, daher ist es besser, ein Profil anhand eines realistisch großen Datensatzes zu erstellen, um sicherzustellen, dass Sie solide Zahlen erhalten, um eine angemessene Entscheidung zu treffen.