В най-лошия случай, когато разглеждате неиндексирано поле, използвайте MIN()
изисква едно пълно преминаване на масата. Използване на SORT
и LIMIT
изисква сортиране на файлове. Ако се работи срещу голяма маса, вероятно ще има значителна разлика в възприеманата производителност. Като анекдотична точка от данни, MIN()
отне 0,36 секунди, докато SORT
и LIMIT
взех .84s срещу таблица от 106 000 реда на моя сървър за разработчици.
Ако обаче разглеждате индексирана колона, разликата е по-трудна за забелязване (безсмислената точка от данни е 0.00s и в двата случая). Гледайки изхода на objasni, обаче, изглежда като MIN()
може просто да извлече най-малката стойност от индекса („Изберете оптимизирани таблици“ и „NULL“ редове), докато SORT
и LIMIT
все още трябва да направи подредено обхождане на индекса (106 000 реда). Действителното въздействие върху производителността вероятно е незначително.
Изглежда като MIN()
е начинът, по който трябва да отидете - той е по-бърз в най-лошия случай, неразличим в най-добрия, е стандартен SQL и най-ясно изразява стойността, която се опитвате да получите. Единственият случай, в който изглежда, че се използва SORT
и LIMIT
би било желателно би било, като mson
споменато, където пишете обща операция, която намира горните или долните N стойности от произволни колони и не си струва да изписвате операцията за специален случай.