Sıralı bir sonuç kümesinin, bir ORDER BY
cümle olmadan görünümü , çoğunlukla, dizinleri sıralamasında satırları alan bir taramadan kaynaklanır. Bir dizin sırası taramasının genellikle varsayılan READ COMMITTED
yalıtım düzeyi altında seçilmesinin bir nedeni , aynı satıra birden çok kez rastlamak veya bazı satırları tamamen atlamak gibi istenmeyen eşzamanlılık anormalliklerini azaltmasıdır. Bu, izolasyon seviyeleri ile ilgili bu makale dizisi de dahil olmak üzere çeşitli yerlerde ayrıntılıdır .
Bir ile NOLOCK
tablo ipucu, bu davranış, gevşetilir ve masaya erişim daha toleranslı altında gerçekleştirilir READ UNCOMMITTED
olabilir yalıtım seviyesi, ayırma amacıyla veri tarama yerine göstergesi için. Bu bağlantıda açıklandığı gibi, bir ayırma sırası veya dizin sırası taraması kullanmayla ilgili karar depolama motoruna bırakılır. Bu seçim, sorgu planında değişiklik yapılmadan yürütmeler arasında değişebilir .
Bu çok soyut gelebilir, ancak AdventureWorks2012 veritabanına karşı belgelenmemiş işlevler kullanan bazı sorgularda daha kolay gösterilebilir .
USE AdventureWorks2012;
GO
-- Appears to be ordered by BusinessEntityID
-- File:Page:Slot goes up and down several times
-- Show physical locations with sys.fn_PhysLocFormatter (undocumented)
SELECT
P.BusinessEntityID,
[(File:Page:Slot)] =
sys.fn_PhysLocFormatter(%%physloc%%)
FROM Person.Person AS P;
-- Same query with TABLOCK or NOLOCK
-- Allocation-order (IAM) scan
-- Now appears to be ordered by File:Page:Slot instead of BusinessEntityID
SELECT P.BusinessEntityID,
[(File:Page:Slot)] =
sys.fn_PhysLocFormatter(%%physloc%%)
FROM Person.Person AS P WITH (NOLOCK);
Sorgular Paul White'dan küçük bir değişiklikle ödünç alındı .
Son olarak, net olmak gerekirse, bu cevap sıralı bir sonuç kümesinin ortaya çıkmasıyla ilgilidir. Orada hiçbir sunum sırası garanti bir üst düzey olmadan ORDER BY
.
Bir tablo düzeyinde kilit alındığında veya veritabanının salt okunur modda olduğu gibi çeşitli diğer durumlarda ayırma sırası taraması oluşabilir. Paralellik aynı zamanda verilerin iade edilme sırasını da etkileyebilir. Kilit nokta, ORDER BY
sipariş verilerinin geri gönderilmesinin zaman içinde tasarım gereği değişebilmesidir.