SQL için en iyi uygulamalar sütun uzunluğu varchar
length
için en iyi değeri nedir. yeni bir SQL tablo veya varolan bir tablo için varchar
yeni bir sütun eklemek her zaman, bir şeyi merak ediyorum:
Yani, hadi, bir sütun türü varchar
name
denir. Yani, uzunluğu seçmek zorundasınız. Yapamam ad ^ düşün . 20 karakter, ama hiç belli olmaz. Ama yerine, ben her zaman 2^n bir sonraki sayıya kadar yuvarlak kullanarak. Bu durumda, uzunluk olarak 32 seçerdim. Ben bunu, çünkü bir bilgisayar bilimcisi bakış açısı, Sayı 2^n çok daha iyi gibi görünüyor even
benden başka numaralar ve ben sadece farz mimarisi altında yapabilir bu rakamlar biraz daha iyi diğerlerinden.
Öte yandan, örneğin MSSQL server, no sütun oluşturmak için seçtiğinizde 50, varsayılan uzunluğu değerini ayarlar. Bu konuda beni düşünmeye sevk ediyor. Neden 50? sadece rastgele bir sayı veya ortalama sütun uzunluğu, ya da neye dayanarak?
Ayrıca farklı SQL sunucuları uygulamaları - ya da belki - olabilir (MySQL, MSSQL, PostgreSQL gibi ...) farklı en iyi sütun uzunluğu değerleri var.
CEVAP
Benim bildiğim hayır VERİTABANI "" 2^n uzunluğunda bir No max ile daha iyi bir performans sağlayacaktır. optimizasyon herhangi bir uzunluğu 2 olan bir güç değil.
Erken SQL Server sürümleri aslında uzunluğu 255 ile bir VARCHAR daha farklı, daha yüksek, uzunluğu bir tedavi düşünüyorum. Eğer hala bu durumda bilmiyorum.
Hemen hemen tüm VERİTABANI için gerekli olan gerçek depolama sadece bunu koymak karakter sayısı max tarafından belirlenir. uzunluğu tanımlayın. Görüş depolama noktası (ve büyük olasılıkla bir performans) ikilik(100) veya VACHAR(500) olarak bir sütun bildirmek olsun hiç fark etmez.
Max görmelisiniz. uzunluğu teknik/fiziksel bir şey yerine kısıtlama bir tür (veya iş kuralı) no sütun için sağlanan.
PostgreSQL için en iyi Kur uzunluğu bir kısıtlama olmadan text
kullanma ve ne olursa olsun başka bir iş gerektirir karakter sayısını sınırlar CHECK CONSTRAINT
.
Eğer bu şartı değişirse, onay kısıtlaması değiştirme tablo yeniden yazılmış olması gerekmez, çünkü () değiştirmekten çok daha hızlı
Aynı Oracle ve diğerleri için uygulanabilir - Oracle VARCHAR(4000)
text
yerine olurdu.
Eğer ikilik(max) ve örneğin ikilik(500) SQL Server depolama arasında fiziksel bir fark varsa bilmiyorum. Ama görünüşe göre 10* *göre varchar(max)
kullanırken bir performans etkisi yoktur.
this link (bir yorum olarak Erwin Brandstetter tarafından yayınlanmıştır)
2013-09-22 düzenleyin
Bigown yorum ile ilgili:
Sütun tanımı 9.2 ilk cevap yazdığım zaman mevcut değildi) bir değişiklik daha önce sürümleri İsimyaptıbütün tablo, örneğin here bakın yeniden. 9.2 beri, bu artık bir durumdur ve hızlı bir test 1.2 milyon satır ile bir tablo için sütun sayısının artırılması gerçekten sadece 0,5 saniye sürdüğünü doğruladı.
Oracle için bu gerçek de, büyük bir masa varchar sütunu değiştirmek için gereken süreyi bakılırsa görünüyor. Ama bunun için herhangi bir referans bulamadım.
MySQL İçin the manual says "Çoğu durumda, ALTER TABLO orijinal tablonun geçici bir kopyasını oluşturur". Ve kendi testlerimi onaylayın: 1.2 milyon satır (PostgreSQL ile benim test olarak) bir sütun boyutunu artırmak için bir tablo üzerinde ALTER TABLE
Bir çalışan 1.5 dakika sürdü. MySQL ancakdeğilkullan "seçeneği yararlı kullanmak için bir sütun. karakter sayısını sınırlamak için" geçici çözüm
SQL Server için bu konuda net bir açıklama bulamadım ama no sütun (tekrar yukarıdan 1.2 milyon satır tablo) boyutunu artırmak için yürütme zamanı gösterirhayıryeniden gerçekleşir.
Ne sütun tipi/uzunluğu Veritabanında B...
MySQL BLOB sütun içine koymak için en ...
Varchar kısıtlamak() belirli değerler ...
Nasıl Server tablo sütun olup olmadığı...
Nasıl sütun(s) tarafından bir datafram...