Почему «УСТАНОВИТЬ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ СЧИТАЕТСЯ НЕКОММИТИРОВАННЫМ» возвращает строки в другом порядке? - PullRequest
7 голосов
/ 02 февраля 2012

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

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

в моей хранимой процедуре.

Ниже приведен запрос, определенный в хранимой процедуре.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

SELECT   CaseRateDetailId,AmtPerWeek
FROM    CaseRateDetails
WHERE   CaseRateInfoId = @CaseRateInfoId

Возвращает AmtPerWeek так:

10000,15000,5000,20000,25000,..

Когда я запускаю тот же запрос без использования

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

оператор возвращает строки в правильном порядке, т.е. 5000,10000,15000,20000,25000,....

Я могу использовать порядок по предложению AmtPerWeek в запросе выше, но я хочу знать причину, по которой он ведет себя так? Почему меняется порядок строк?

1 Ответ

10 голосов
/ 02 февраля 2012

В NOLOCK или TABLOCK вы можете получить упорядоченное сканирование с выделением , которое читает страницы в порядке файлов, а не следит за уровнем листа индекса.

Это не 't показать в плане выполнения, использует ли он этот метод или нет.Без ORDER BY заказ не гарантируется.

...