İlk bakışta TEXT ve VARCHAR'ın aynı veriyi depolayabileceği düşünülür. Ancak ikisi arasında temel farklılıklar var. TEXT alanları ve VARCHAR alanları çalışma şekli birbirinden farklıdır.
VARCHAR aslında ISO SQL: 2003 standardının bir parçası iken TEXT veri tipleri ve standardize edilmemiş olan TINYTEXT'i içerir. Depolama alanı ile ilgili olarak, TEXT veri türleri, bunları içeren tablolardan ve sonuç kümelerinden ayrı nesneler olarak tutulur. Verş depolanırken bir fark görülmez, yani bir TEXT alanı içeren ve birinde bir VARCHAR alanı bulunan bir sorgunun yazılması arasında fark yoktur. Ancak TEXT verisi diğer veriler ile aynı satırda saklanmadığından, TEXT alanlarının sorguda talep edilmesi ile birlikte fazladan harddiskte okuma talebine ihtiyaç duyulur.
VARCHAR'ın satır uzunluğu tablonun maksimum satır uzunluğuyla sınırlandırılmıştır. Bu uzunluk veritabanlarının çoğu için 65.535 bayt civarındadır. NBD'nin farklı sıra değerlerine sahip olduğuna dikkat etmek önemlidir. Teorik olarak VARCHAR'ın maksimum uzunluğu 65.536 bayttır. Karakter serisi çok baytlı karakteri, örneğin UTF-8 kullanıyorsa tabloyu VARCHAR ile tanımlamakta güçlük çekebilirsiniz
Depolama alanı 255 bayttan büyükse azami uzunlukta saklamak için gereken yük 2 bayt'tır. VARCHAR'ın tablodaki tek satır olduğu ve NULL değerlerine izin vermediği durumda VARCHAR'ın maksimum uzunluğu 65532 bayt'tır. İzin verilen değerden daha uzun bir VARCHAR değeri tanımlarsak, 1118 veya 1074 gibi bir hatayla karşılaşabiliriz.
TEXT verilerinin boyutu, kullanılan TEXT veri türüne bağlıdır. TEXT nesneler olarak saklandığından, nesne tablosundaki sıra yükü, yani 8 veya 16 bayt işaretçidir. Maksimum metin uzunluğu ve TEXT nesnesindeki yükün listesi aşağıdadır
- MEDIUMTEXT - 16 MB'a kadar, 3 baytlık yük
- LONGTEXT - 4 GB'a kadar, 4 baytlık yük
- TINYTEXT - 255 bayta kadar, 1 baytlık yük
- METİN - 64 KB'ye kadar, üstü 2 bayt
MySQL, varsayılan alanlarının DEFAULT değeriyle oluşturulmasına izin verilirken, TEXT veri türlerinin NULL değerinden daha yüksek bir değere ulaşmasına izin vermez.
Depolama etkileri nedeniyle TINYTEXT yerine VARCHAR kullanılması tercih edilir. Varsayılan değer olarak NULL değerine sahip olmanız gerekiyorsa VARCHAR (veya CHAR) kullanmanız gerekir. Dizeleri yaklaşık 64 Kb'dan daha uzun depolamak için MEDIUMTEXT veya LONGTEXT kullanın. VARCHAR Büyük değerlerin depolanmasını desteklemez.