2009-06-12 2 views
3

что быстрее запрос?что быстрее запрос (выбрать имя .... или выберите сверху (1) имя

select Name from Worker 

или

select TOP(1) Name from Worker 

У меня есть 1000000 записей

благодарственное-х заблаговременно

+4

серьезно? разве вы не можете просто испытать себя? –

+3

Почему downvotes? Это законный вопрос, простой и понятный, я понял, о чем он просит. Конечно, это могло быть отформатировано лучше, но давай, -2? Я даю ему +1. –

+1

Могут ли те, кто покидает нисходящие глаза, оставить комментарий, чтобы объяснить? Это хороший вопрос, особенно если у вас есть ORDER BY и DISTINCTS там, и вы сбиты с толку о производительности. – Eric

ответ

9

Если у вас нет ORDER BY или DISTINCT, SELECT TOP(1) Name FROM Worker работает быстрее.

Причина этого заключается в том, что если у вас есть ORDER BY или DISTINCT, запрос должен пройти всю таблицу для сортировки и фильтрации нежелательных результатов. Однако, если это прямой SELECT TOP, он может перейти на первую страницу, сделать первый ряд и сделать это очень быстро.

+1

True. Конечно, если у вас есть 1 000 000 записей, то выбор первого уровня будет быстрее, несмотря ни на что. Предложение order by просто замедлит работу и немного уменьшит разницу в скорости. –

+0

спасибо, много !! – Gold

+1

Во время выполнения запрос может управлять потоком, потому что клиент не может достаточно быстро проанализировать результат (использовать набор результатов 1 млн. Имен). Таким образом, даже при заказе TOP 1 * может * быть быстрее, в зависимости от того, насколько медленна обработка клиента. –

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