SORU
5 Ocak 2010, Salı


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
13 NİSAN 2011, ÇARŞAMBA


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

Screenshot

SELECT id,name8000
FROM T
ORDER BY number

Screenshot

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caroline Martin

    Caroline Mar

    19 EYLÜL 2008
  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • Tutorials Junction

    Tutorials Ju

    1 Ocak 2014