SORU
13 EKİM 2011, PERŞEMBE


ikilik(255) vs tinytext/tinyblob ve ikilik(65535) vs blob/text

Tanım olarak:

VARCHAR: Uzunluk aralığı 1 255 karakterdir. VARCHAR değerleri sıralanır ve İKİLİ anahtar kelime verilen sürece büyük / küçük harf duyarlı şekilde kıyasla. x 1 bayt
TİNYBLOB, TİNYTEXT: BLOB veya BİR METİN uzunluğu en fazla 255 (2^8 - 1) sütun x 1 bayt karakter

Yani buna göre, aşağıdaki tabloyu ben creaate:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Ya da daha iyi varchar veya tinytext ve bir oluşturmak içinneden?

Aynı için:

VARCHAR: Uzunluk aralığı< 255 karakter. VARCHAR değerleri sıralanır ve İKİLİ anahtar kelime verilen sürece büyük / küçük harf duyarlı şekilde kıyasla. x 2 bayt
BLOB, BLOB, METİN veya METİN sütun 65535 (2^16 - 1) uzunluğunda x 2 bayt karakterler

CEVAP
24 EKİM 2011, PAZARTESİ


KİMDEN: http://www.pythian.com/news/7129/text-vs-varchar/

İlk bakışta, TEXT ve VARCHAR aynı mağaza gibi görünüyor bilgi. Ancak, arasındaki temel farklar vardır yol almak için önemli olan METİN alanları ve VARCHAR alanları, dikkate.

StandartVARCHAR aslında ISO SQL:2003 standardı; TEXT veri türleri, TİNYTEXT dahil olmak üzere, standart dışı olan parçasıdır.

DepolamaMETİN veri türleri içeren tablolar ve sonuç kümelerini ayrı nesneler olarak saklanır. Bu depolama şeffaf — orada bir sorgu bir METİN alanı içeren nasıl bir farklılık bir No alanı içeren karşı yazılmış. METİN depolanan bu yana METİN alanı satır, bir geri alma parçası ekstra [düzenlenmiş gerektirir 1/22] havai bellek.

Maksimum VARCHAR uzunluğuBir VARCHAR en büyük satır uzunluğu tablo en büyük satır uzunluğu ile sınırlıdır. Bu fiyat 65535 bayt en depolama motorları (NDB farklı maksimum satır değeri vardır). Teorik olarak bir VARCHAR uzunluğu en fazla 65,536 bayt. Yükü daha da VARCHAR gerçek en büyük boyutunu sınırlar.

No alan uzunluğu depolama VARCHAR ise 1 bayt alır alanı ise 255'den büyük ise 0 ile 255 arasında bayt olarak en fazla uzunluğu vardır; bayt uzunluğu depolamak için yükü 2 bayt. VARCHAR ise alan ek yük ekler, BOŞ değerler, her tablo sağlar NULL izin 8 alanların her biri için yük 1 byte kullanır değerler. VARCHAR tabloda tek satır, değilse BOŞ değerlere izin vermek, maksimum uzunluğu VARCHAR 65,532 için izin bayt.

VARCHAR sayısı(x) sayısı temsil ettiğini unutmayın karakter, bayt sayısı. Bu nedenle, zorluklar olabilir karakteri ise ikilik(65532) sadece bir tablo tanımlamak için çalışıyorum multi-byte karakter, UTF-8 gibi.

Eğer izin verilenden daha uzun olan sütun değeri tanımlamak için çalışırsanız, 1118 veya 1074 gibi bir hata içine çalışacak

ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change

METİN veya Lekeler için bazı sütunlar.

ERROR 1074 (42000): Column length too big for column 'col_name' (max=[max number here]); use BLOB or TEXT instead

Maksimum METİN uzunluğuMETİN veri türü boyutu veri türü kullanılan bağlıdır. Saklandığından nesneler, bir tabloda tek satır havai nesneye bir işaretçi olarak (8 veya 16 bayt). Burada maksimum METİN uzunluğu ve listesi yükü (METİN nesnesi):

TINYTEXT – up to 255 bytes, 1 byte overhead

TEXT – up to 64 Kb, 2 bytes overhead

MEDIUMTEXT – up to 16 Mb, 3 bytes overhead

LONGTEXT – up to 4 Gb, 4 bytes overhead

VARSAYILAN değerlerMySQL METİN veri türleri, varsayılan değer NULL dışında izin vermiyor. VARCHAR alanları için izin verilir VARSAYILAN değeri yarattı.

SonuçDepolama etkileri nedeniyle, TİNYTEXT yerine VARCHAR kullanmak en iyisidir.

Eğer BOŞ olduğunu VARSAYILAN bir değer olması gerekiyorsa, kullanmanız gerekir İKİLİK (ya) CHAR.

Eğer dizeleri yaklaşık 64 Kb daha uzun süre saklamak gerekiyorsa, kullanın MEDİUMTEXT veya LONGTEXT. VARCHAR edemiyor değerleri saklamak destek büyük.

Multi-byte karakter kümesi etkilerinin farkında olduğundan emin olun. İKİLİK(255) 255'ten fazla bayt olabilir hangi 255 karakter depolar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Elefant Traks

    Elefant Trak

    5 HAZİRAN 2007
  • Fraser Raft

    Fraser Raft

    9 Mart 2010
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008