Maaapektuhan ba ng naiiba ang performance?

Talaan ng mga Nilalaman:

Maaapektuhan ba ng naiiba ang performance?
Maaapektuhan ba ng naiiba ang performance?
Anonim

Oo, dahil ang paggamit ng DISTINCT ay (kung minsan ayon sa isang komento) ay magsasanhi ng results na ma-order Ang pag-uuri ng daan-daang record ay nangangailangan ng oras. Subukan ang GROUP BY lahat ng iyong column, kung minsan ay maaari nitong pangunahan ang query optimiser na pumili ng mas mahusay na algorithm (kahit sa Oracle ay may napansin akong makabuluhang dagdag sa performance).

Masama bang gumamit ng distinct?

Buweno, hindi lamang itinatago ng hindi wastong paggamit ng "natatangi" ang tunay na problema (mga duplicate na entry sa mga talahanayan, kawalan ng kundisyon sa on clause) gaya ng tinalakay sa itaas kundi pati na rin nagpapababa sa pagganap ng query… Dadalhin nito ang IO Cost (logical reads) ng query nang malaki.

Pinapabagal ba ng naiiba ang query?

Napakakaunting mga query ang maaaring gumanap nang mas mabilis sa SELECT DISTINCT mode, at very few will performer mas mabagal (ngunit hindi mas mabagal) sa SELECT DISTINCT mode ngunit para sa susunod na kaso ito ay malamang na maaaring kailanganin ng application na suriin ang mga duplicate na kaso, na naglilipat sa pagganap at kumplikadong pasanin sa aplikasyon.

Mas maganda bang gumamit ng distinct o GROUP BY?

Sa MySQL, ang DISTINCT ay tila medyo mas mabilis kaysa GROUP BY kung ang Field ay hindi na-index. Ang DISTINCT ay nag-aalis lamang ng mga duplicate na row ngunit GROUP BY ay tila nagbubukod-bukod sa kanila bilang karagdagan.

Bakit hindi natin dapat gamitin ang distinct sa SQL?

Kung may piling natatanging nariyan upang 'ayusin' ang isang problema, malamang na makakuha ka ng hindi magandang pagganap bilang kapalit. Hinahayaan ka ng GROUP BY na gumamit ng mga pinagsama-samang function, tulad ng AVG, MAX, MIN, SUM, at COUNT. DISTINCT nag-aalis lang ng mga duplicate.

Inirerekumendang: