Wird sich Distinct auf die Leistung auswirken?

Inhaltsverzeichnis:

Wird sich Distinct auf die Leistung auswirken?
Wird sich Distinct auf die Leistung auswirken?

Video: Wird sich Distinct auf die Leistung auswirken?

Video: Wird sich Distinct auf die Leistung auswirken?
Video: Wie sich die Sitzhöhe auf Gesundheit und Leistung auswirkt | Sattelhöhe im Test 2024, Dezember
Anonim

Ja, da die Verwendung von DISTINCT (manchmal laut einem Kommentar) dazu führt, dass Ergebnisse geordnet werden Das Sortieren von Hunderten von Datensätzen braucht Zeit. Probieren Sie GROUP BY für alle Ihre Sp alten aus, es kann manchmal dazu führen, dass der Abfrageoptimierer einen effizienteren Algorithmus wählt (zumindest bei Oracle habe ich einen signifikanten Leistungsgewinn festgestellt).

Ist es schlecht, Distinct zu verwenden?

Nun, die unsachgemäße Verwendung von "distinct" verbirgt nicht nur das eigentliche Problem (doppelte Einträge in den Tabellen, fehlende Bedingung in der on-Klausel), wie oben besprochen, sondern verschlechtert auch die Abfrageleistung… Dadurch steigen die IO-Kosten (logische Lesevorgänge) der Abfrage deutlich an.

Verlangsamt die Abfrage durch Distinct?

Sehr wenige Abfragen können im SELECT DISTINCT-Modus schneller ausgeführt werden, und sehr wenige werden langsamer (aber nicht wesentlich langsamer) im SELECT DISTINCT-Modus ausgeführt, aber für den letzteren Fall ist es wahrscheinlich dass die Anwendung möglicherweise die doppelten Fälle prüfen muss, wodurch die Leistungs- und Komplexitätslast auf die Anwendung verlagert wird.

Ist es besser Distinct oder GROUP BY zu verwenden?

In MySQL erscheint DISTINCT etwas schneller als GROUP BY, wenn theField nicht indiziert ist. DISTINCT eliminiert nur doppelte Zeilen, aber GROUP BY scheint sie zusätzlich zu sortieren.

Warum wir distinct in SQL nicht verwenden sollten?

Wenn select unique dazu da ist, ein Problem zu 'beheben', dann bekommst du wahrscheinlich eine schlechte Leistung zurück. Mit GROUP BY können Sie Aggregatfunktionen wie AVG, MAX, MIN, SUM und COUNT verwenden. DISTINCT entfernt nur Duplikate.

Empfohlen: