A különbség befolyásolja a teljesítményt?

Tartalomjegyzék:

A különbség befolyásolja a teljesítményt?
A különbség befolyásolja a teljesítményt?

Videó: A különbség befolyásolja a teljesítményt?

Videó: A különbség befolyásolja a teljesítményt?
Videó: Бесплатный рецепт прозрачной полимерной глины. Free Transparent Polymer Clay recipe 2024, November
Anonim

Igen, mivel a DISTINCT használata (néha egy megjegyzés szerint) eredményeket fog eredményezni Több száz rekord rendezése időt vesz igénybe. Próbálja ki a GROUP BY-t az összes oszlopában, ez néha arra készteti a lekérdezésoptimalizálót, hogy hatékonyabb algoritmust válasszon (legalábbis az Oracle esetében jelentős teljesítménynövekedést tapaszt altam).

Rossz külön használni?

Nos, a "dinct" helytelen használata nemcsak a valódi problémát rejti el (a táblák ismétlődő bejegyzései, a feltétel hiánya az on záradékban), amint azt fentebb tárgy altuk, hanem rontja a lekérdezés teljesítményét… Ezzel a lekérdezés IO költsége (logikai olvasása) jelentősen megnő.

A megkülönböztetés lassítja a lekérdezést?

Nagyon kevés lekérdezés teljesíthet gyorsabban SELECT DISTINCT módban, és nagyon kevés teljesít lassabban (de nem lényegesen lassabban) SELECT DISTINCT módban, de a későbbi esetekben valószínű hogy az alkalmazásnak esetleg meg kell vizsgálnia az ismétlődő eseteket, ami a teljesítmény- és összetettségi terhet az alkalmazásra hárítja.

Jobb a megkülönböztető vagy a GROUP BY használata?

A MySQL-ben a DISTINCT egy kicsit gyorsabbnak tűnik, mint a GROUP BY, ha a Field nincs indexelve. A DISTINCT csak az ismétlődő sorokat szünteti meg, de úgy tűnik, hogy a GROUP BY ezen felül rendezi őket.

Miért ne használjunk megkülönböztetőt az SQL-ben?

Ha a különválasztást a probléma „javítására” akarja használni, akkor valószínűleg rossz teljesítményt kap cserébe. A GROUP BY segítségével összesítő függvényeket használhat, például AVG, MAX, MIN, SUM és COUNT. DISTINCT csak eltávolítja a duplikációkat.

Ajánlott: