1) Да , выбор с NOLOCK
завершится быстрее, чем обычный выбор.
2) Да , выбор с помощью NOLOCK
позволит другим запросам к выполненной таблице завершаться быстрее, чем обычный выбор.
С чего бы это?
NOLOCK
обычно (в зависимости от вашего механизма БД) означает, что вы предоставляете мне свои данные, и мне все равно, в каком состоянии они находятся, и не беспокойтесь о том, чтобы держать их неподвижно, пока вы читаете их. Это одновременно быстрее, менее ресурсоемко и очень и очень опасно.
Вы должны быть предупреждены о том, что никогда не следует обновлять или выполнять какие-либо критичные для системы действия или требовать абсолютной корректности, используя данные, полученные из NOLOCK
чтения. Вполне возможно, что эти данные содержат строки, которые были удалены во время выполнения запроса или были удалены в других сеансах, которые еще не завершены. Возможно, что эти данные включают строки, которые были частично обновлены. Возможно, что эти данные содержат записи, которые нарушают ограничения внешнего ключа. Возможно, что эти данные исключают строки, которые были добавлены в таблицу, но еще не были зафиксированы.
У вас действительно нет возможности узнать, в каком состоянии находятся данные.
Если вы пытаетесь получить такие данные, как количество строк или другие сводные данные, где допустимый предел погрешности приемлем, то NOLOCK
это хороший способ повысить производительность этих запросов и избежать их негативного влияния на производительность базы данных.
Всегда используйте NOLOCK
подсказку с большой осторожностью и относитесь к любым данным, которые она возвращает, с подозрением.