2008-09-27 21 views
13

Benim soruma göre ufaklık & tinytext arasında gerçekten bir fark var mı?varchar (255) v tinyblob v tinytext

Gerçek sorumu satın al, eğer var mıyım, var mıyım (255) üzerinde tinyblob veya tinytext?

cevap

16

öncelikle storage requirements ve hafıza kullanımı/hızı: Aşağıdaki tabloda

, M ikili dizi tipleri için nonbinary dize türleri ve bayt karakter bildirilen kolon uzunluğu temsil eder. L, belirli bir dize değerinin bayt cinsinden gerçek uzunluğunu temsil eder.

VARCHAR (M), VARBINARY (M):
L + 1 bayt sütun değerleri 0 gerektiriyorsa - 255 bayt, değerler fazla 255 baytı

gerektirebilir
L + 2 bayt halinde TINYBLOB, TINYTEXT:
L + 1 bayt, L

MySQL 4 satırlar için bellek ayırır, kullanım sırasında her bir tablo için

:

Ayrıca, this yayınına bakın. Bu satırlarının her biri için CHAR (X)/VARCHAR (X) sütunu X karakterlerini alır. Öte yandan

bir Metin/kabarcık bir 8 bayt işaretçi + bir 1-4 bayt uzunluğunda ( kabarcık/METİN türüne bağlı olarak) ile temsil edilen olup. BLOB/TEXT, kullanımda dinamik olarak ayrılmış 'dur. Bu daha az bellek kullanır, ancak bazı durumlarda uzun çalışmasında belleğinizi parçalayabilir.

Düzenleme: Bir kenara, lekeler ikili veri ve metin depolar ASCII saklamak üzere, TINYBLOB ve TINYTEXT arasındaki tek fark bu.

5

VARCHAR (255), tinyblob veya tinytext'ten daha fazla SQL standardıdır. Böylece komut dosyanız ve uygulama veritabanı satıcıları arasında daha taşınabilir olacaktı.

-8

Sen TINYTEXT için KARAKTER SET geçerli değildir, ancak VARCHAR (255)

+2

O VARCHAR ve (mySQL) TINYTEXT hem ayarlı doğru değil, sen uygulayabilirsiniz karakter ama TINYBLOB için değil çevrilevilebilecekleri. –