Her zaman (n)varchar(max)
metin sütunları için mi kullanmalıyım ?
Yok hayır.
SQL Server için max
veri türleri yalnızca alternatif olmadığında belirtilmelidir. Bunun yerine doğru taban tipini ( varchar
veya nvarchar
) seçmeli ve depolanacak verilere uygun açık bir maksimum uzunluk belirtmelisiniz.
Fiziksel depolama, sütunun varchar(n)
ya da olarak yazılıp yazılmadığıyla aynıdır varchar(max)
, dolayısıyla endişe olmaz.
Nedenler için değil tercih (n)varchar(max)
heryerde özellikleri, planı kalitesi ve performansı etrafında döner.
Kapsamlı bir liste muhtemelen pratik değildir, fakat diğer şeylerin yanı sıra, max
sütunlar:
Özellikler
- Maksimum uzunluğu zorlamak için ayrı bir kısıtlama isteyin
- Bir dizinde anahtar olamaz (bu nedenle de benzersiz kısıtlamalar yoktur)
- Çevrimiçi DDL'yi önleyebilir (dizin yeniden oluşturma ve boş olmayan yeni bir sütun ekleme dahil)
- Columntore 'gibi' daha yeni 'özellikler için genellikle desteklenmiyor
- Daha spesifik özellikler ve sınırlamalar için ürün belgelerine bakın. Genel kalıp,
max
veri türleri etrafında garip kısıtlamalar ve kısıtlamalar olduğudur . Tüm sınırlamalar ve yan etkiler belgelenmemiştir.
performans
- Potansiyel olarak çok büyük ebatları hesaba katarak, yürütme motorunda özel işlem yapılmasını gerektirir. Tipik olarak, bu bir akış arayüzü ile, daha az verimli bir kod yolu kullanılmasını içerir.
- Ayrıca gereken dış kod (ve SSIS gibi diğer SQL Server bileşenleri), benzer beklenmeyen sonuçlara yol açabilir hazırlanan boyutu 2GB verileri işlemek için
- Bellek hibe hesaplamalarında 4000 byte genişlikte kabul edilmiştir. Bunun eşzamanlılığı sınırlayan ve değerli dizin ve veri sayfalarını önbellek dışına iten aşırı bellek rezervasyonuna yol açması olasıdır.
- Birkaç önemli performans optimizasyonunu devre dışı bırakın
- Kilitleme süresini uzatabilir
- Optimize Edici'nin (dinamik olmayan) bir arama planı seçmesini engelleyebilir
- Filtrelerin taramaya itilmesini ve artık olarak görünmesini önleyin
- Tempdb basıncını ve çekişmesini artırabilir (sürüme bağlı), çünkü değişkenler ve parametrelerin
max
sütun tanımlarıyla eşleşmesi muhtemeldir
Özetle, şartnameyi gereksiz yere kullanmanın bir max
anlam ifade etmeyecek kadar ince (ve istenmeyen) yan etkileri vardır . Tek bir bildirim kullanmanın küçük 'rahatlığı' hiçbir tazminat değildir.
Her türü bağlam içinde değerlendirin, doğru taban türünü ( varchar
veya nvarchar
) ve makul bir açık uzunluğu kullanın.
Daha fazla okuma: