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