2011-01-20 17 views
11

jeśli wiadomo, że istnieją tylko dwie wartości kandydata do wyniku kolumnymysql, ifnull vs coalesce, który jest szybszy?

ifnull(a, b) as a_or_b_1 

i

coalesce(a, b) as a_or_b_2 

dadzą ten sam wynik. ale który jest szybszy? podczas wyszukiwania znalazłem this article, który mówi: ifnull jest szybszy. ale to był jedyny artykuł, który znalazłem. jakiekolwiek poglądy na ten temat?

z góry z góry :)

+2

Czy jesteś pewien, że jest to ** najwolniejsza część Twoich zapytań? :-) – zerkms

+0

ściganie cykli :( – davogotland

Odpowiedz

12

Mój pogląd jest taki, że należy dokonać analizy porównawczej zużycia.

Wątpię, czy będzie duża różnica. Należy pamiętać, że chociaż jeden benchmark może sugerować, że jeden jest nieco lepszy, zmienność danych w czasie może zmienić ten wynik.

Należy również zauważyć, że COALESCE jest częścią standardowego SQL od 1992 roku - nie jestem pewien, czy IFNULL jest jeszcze w jakimkolwiek standardzie.

Istnieje niezły artykuł Adama Machanica na temat porównywania scenariusza równoważnego - Performance: ISNULL vs. COALESCE (in SQL Server). Zwróć uwagę na niektóre z warunków uzyskania ważnego testu.

Powiązane problemy