2016-12-07 2 views
0

Просто интересно, насколько MySQL достаточно умен, чтобы остановить поиск, если в предложении WHERE указан первичный ключ (или уникальный индекс), как если бы вы указали LIMIT 1 вручную?Делают ли предложения WHERE на первичном ключе LIMIT 1?

+0

Проведите тест, чтобы сравнить скорость выполнения с LIMIT 1 и без него, я бы поставил на то, что MySQL достаточно умен, хотя. – ceyquem

ответ

0

Я уверен, потому что это простая и полностью очевидная оптимизация. Ничего толкового в этом нет.

0

Согласно docs

Как только MySQL послал требуемое число строк клиенту, он прервет запрос, если вы не используете SQL_CALC_FOUND_ROWS

Так что ответ " да".

0

, как если бы вы указан LIMIT 1 вручную

Не думаю, указав limiT 1 ограничивает количество строк, возвращаемых только 1. тогда как если вы скажете where col1 = val1, тогда все строки, соответствующие условию, будут возвращены. Теперь, поскольку primary key (or unique index) не может иметь дубликатов, количество строк будет 1 детерминистическим, и поэтому будут возвращены 1 строки.

Не знаете, как обе они являются такими же и более того, не понимаю, почему оба эти метода должны быть дифференцированы.

Смежные вопросы