Коли я додаю LIMIT 1 до запиту MySQL, чи зупиняє він пошук після того, як знаходить 1 результат (таким чином, робить це швидшим), чи все-таки отримує всі результати та скорочує в кінці?
Коли я додаю LIMIT 1 до запиту MySQL, чи зупиняє він пошук після того, як знаходить 1 результат (таким чином, робить це швидшим), чи все-таки отримує всі результати та скорочує в кінці?
Відповіді:
Залежно від запиту, додавання речення limit може мати величезний вплив на продуктивність. Якщо вам потрібен лише один рядок (або ви точно знаєте, що лише один рядок може задовольнити запит), і не впевнені в тому, як його буде виконувати внутрішній оптимізатор (наприклад, речення WHERE, що не потрапляє в індекс тощо), тоді ви обов’язково повинні додати речення LIMIT.
Що стосується оптимізованих запитів (із використанням індексів на невеликих таблицях), це, мабуть, не буде мати великого значення в продуктивності, але знову ж таки - якщо вас цікавить лише один рядок, ніж не додайте пропозицію LIMIT незалежно.
Обмеження може вплинути на продуктивність запиту (див. Коментарі та посилання нижче), а також зменшує набір результатів, що виводиться MySQL. Для запиту, в якому ви очікуєте єдиного результату, є переваги.
Більше того, обмеження набору результатів насправді може пришвидшити загальний час запиту, оскільки передача великих наборів результатів використовує пам’ять і потенційно створює тимчасові таблиці на диску. Я згадую про це, оскільки нещодавно побачив програму, яка не використовувала limit kill server через величезні набори результатів, а з обмеженням на місце використання ресурсів надзвичайно впало.
Перегляньте цю сторінку, щоб дізнатися більше: Документація MySQL: Оптимізація ОБМЕЖЕНЬ
Якщо повертається лише 1 результат, тоді ні, LIMIT не зробить це швидшим. Якщо результатів багато, і вам потрібен лише перший результат, і немає інструкцій GROUP або ORDER by then, LIMIT зробить це швидше.
Коротше, відповідь - так. Якщо ви обмежите свій результат до 1, то навіть якщо ви "очікуєте" одного результату, запит буде швидшим, оскільки ваша база даних не буде переглядати всі ваші записи. Він просто зупиниться, коли знайде запис, який відповідає вашому запиту.
UNIQUE
(абоPRIMARY KEY
) обмеження (або індекс). stackoverflow.com/questions/8467092 / ...