TEXTbüyük dize verileri parçaları için kullanılır. Alanın uzunluğu belirli bir eşiği aşarsa, metin satır dışında saklanır.
VARCHARher zaman satırda saklanır ve 8000 karakter sınırlaması vardır . Bir x oluşturmaya çalışırsanız VARCHAR(x), burada x> 8000 , bir hata alırsınız:
Sunucu: Msg 131, Seviye 15, Durum 3, Hat 1
'Varchar' türüne verilen boyut (), herhangi bir veri türü için izin verilen maksimum değeri aşıyor (8000)
Bunlar uzunluk sınırlamaları endişe yok VARCHAR(MAX)içinde SQL Server 2005 gibi, sıranın dışına saklanabilir, TEXT.
Not MAXBurada sabit bir tür değildir, VARCHARve VARCHAR(MAX)tükenen çok yakın çok farklı türleri vardır TEXT.
SQL Server'ın önceki sürümlerinde TEXTdoğrudan erişemediniz, sadece bir alabilir TEXTPTRve içinde READTEXTve WRITETEXTişlevlerinde kullanabilirsiniz.
Gelen SQL Server 2005 yapabilirsiniz doğrudan erişim TEXTkolonları (eğer hala açık döküm ihtiyaç olsa VARCHARonlar için bir değer atamak için).
TEXT iyidir:
- Büyük metinleri veritabanınızda depolamanız gerekiyorsa
- Sütunun değerini aramazsanız
- Bu sütunu nadiren seçerseniz ve üzerine eklemezseniz.
VARCHAR iyidir:
- Küçük teller saklarsanız
- Dize değerinde arama yaparsanız
- Her zaman seçerseniz veya birleştirmelerde kullanırsanız.
By seçerek burada sütunun değeri döndürmek herhangi sorgular veren demek.
By arama Burada Kimin sonuç değerine bağlıdır herhangi sorgular veren demek TEXTveya VARCHARsütunda. Bu, herhangi bir durumda JOINveya WHEREdurumda kullanmayı içerir .
Gibi TEXTsatır dışında depolanan, kapsamayan sorgular TEXTsütunu genellikle daha hızlıdır.
Neyin TEXTiyi olduğuna dair bazı örnekler :
- Blog yorumları
- Wiki sayfaları
- Kod kaynağı
Neyin VARCHARiyi olduğuna dair bazı örnekler :
- Kullanıcı adları
- Sayfa başlıkları
- Dosya adları
Genel bir kural olarak, 200 karakteri aşmak için metin değerine ihtiyacınız varsa VE bu sütunda birleştirme kullanmayın TEXT.
Aksi takdirde kullanın VARCHAR.
PS Aynısı , yukarıdaki örnekler için kullanmanız gereken UNICODEetkin NTEXTve aynı zamanda geçerlidir NVARCHAR.
PPS aynı uygulanır VARCHAR(MAX)ve NVARCHAR(MAX)bu SQL Server 2005+ kullanım yerine TEXTve NTEXT. Sen etkinleştirmeniz gerekir large value types out of rowile onlar için sp_tableoptionbunları hep sıranın dışına saklanan olmak istiyorsanız.
Yukarıda ve bahsedildiği gibi burada , TEXTgelecek sürümlerde kaldırılmış olacak:
text in rowSeçenek gelecekteki bir sürümüne kaldırılacaktır SQL Server . Yeni geliştirme işlerinde bu seçeneği kullanmaktan kaçının ve şu anda kullanılan uygulamaları değiştirmeyi planlayın text in row. Size kullanarak büyük veri depolamak öneririz varchar(max), nvarchar(max)ya varbinary(max)veri türlerini. Bu veri türlerinin satır içi ve satır dışı davranışını denetlemek için large value types out of rowseçeneği kullanın.