bir avantaj(500), ikilik(8000) INSERT deyim var mı?
Bu konuda MSDN forumlarında ve burada okuduklarım ve hala anlamış değilim. Bu doğru olduğunu düşünüyorum: Varchar metin veri türü olarak saklanır, bu dezavantajları vardır. Böylece alan güvenilir 8000 karakterden kısa olacak diyelim. Veritabanı tablo BusinessName bir alan gibi. Gerçekte, işletme adı muhtemelen her zaman bir numara benim şapka dışarı çekerek) 500 karakter altında olacak. Rastlamak olan sütun alanları bir sürü şey 8k karakter sayısı altında gibi görünüyor.
Yani bu alan bir ikilik(500) ikilik(8000) yerine yapmak gerekir? SQL anladığım kadarıyla o ikisi arasında fark yok. Yani, hayatı kolaylaştırmak için, bir ad sütunu varchar benim gibi tüm alanları tanımlamak için(8000) isterdim. Bunun herhangi bir dezavantajı var mı?
İlgili: http://stackoverflow.com/questions/177354/size-of-varchar-columns (Bu soruma cevap istemedim).
CEVAP
Bu bir fark yaratabilir bir örnek tetikleyiciler ile sonra tablolara satır sürüm bilgileri ekleyerek önler performans optimizasyonu önleyebilir.
This is covered by SQL Kiwi here
Depolanan verilerin gerçek boyutu önemsiz – potansiyeline sahiptir. önemli olan boyutu.
Sütun genişlikleri ilan üzerinden bir dosyayı masa şimdiye kadar işlenmiş SSIS kullanarak olacak eğer büyük bir fark yaratabilir. Bellek tahsis değişken uzunluğu (olmayan BLOB) sütun sabit için her satırda bir yürütme ağacı ve başına sütun' ilan edilen maksimum uzunluk olan azdır verimsiz kullanımı, bellek tamponlar (example). Buna rağmen ssıspaketi geliştirici bu analizi en iyi ön ve yürürlüğe iyi kaynak daha küçük bir sütun boyutu bildirebilirsiniz.
Geri SQL Server motoru kendisi benzer bir durumda olduğunu bilen bellek vermek ayırmak için SORT
işlemleri SQL Server varsayar varchar(x)
sütun olacak ortalama tüketmek x/2
bayt.
varchar
sütun en eğer bu sort
işlemleri tempdb
akmaya yol açabilir daha dolgun.
Senin örneğinde eğer varchar
sütun olarak ilan etti 8000
bayt ama aslında içeriği çok az olan sorgunuz olacak ayrılmış bellek vermiyor gerektiren açıkçası verimsiz ve eğlenceli yolu bekler için bellek verir.
Bu SQL Atölye Bölüm 2 kaplı 1 downloadable from here web Yayını veya aşağıya bakın.
use tempdb;
CREATE TABLE T(
id INT IDENTITY(1,1) PRIMARY KEY,
number int,
name8000 VARCHAR(8000),
name500 VARCHAR(500))
INSERT INTO T
(number,name8000,name500)
SELECT number, name, name /*<--Same contents in both cols*/
FROM master..spt_values
SELECT id,name500
FROM T
ORDER BY number
SELECT id,name8000
FROM T
ORDER BY number
Hata: &; INSERT EXEC deyimi iç içe olm...
Nasıl yüzer SQL Server'da INSERT deyim...
İNT SQL INSERT deyim dönüştürmek...
HashBytes INSERT deyim dönüştürmek...
SQL Server - INSERT deyim() Guıd'lerin...