TEXTdigunakan untuk potongan besar data string. Jika panjang bidang melebihi ambang tertentu, teks disimpan di luar baris.
VARCHARselalu disimpan dalam baris dan memiliki batas 8000 karakter. Jika Anda mencoba membuat VARCHAR(x), di mana x> 8000 , Anda mendapatkan kesalahan:
Server: Msg 131, Level 15, State 3, Line 1
Ukuran () yang diberikan untuk tipe 'varchar' melebihi maksimum yang diizinkan untuk semua tipe data (8000)
Batasan panjang ini tidak terkait VARCHAR(MAX)dengan SQL Server 2005 , yang mungkin disimpan di luar baris, sama sepertiTEXT .
Perhatikan bahwa MAXini bukan jenis konstanta di sini, VARCHARdan VARCHAR(MAX)merupakan tipe yang sangat berbeda, yang terakhir sangat dekat TEXT.
Dalam versi SQL Server sebelumnya Anda tidak dapat mengakses TEXTsecara langsung, Anda hanya bisa mendapatkan TEXTPTRdan menggunakannya di READTEXTdanWRITETEXT fungsinya.
Di SQL Server 2005 Anda dapat langsung mengakses TEXTkolom (meskipun Anda masih membutuhkan pemeran eksplisit untukVARCHAR untuk menetapkan nilai bagi mereka).
TEXT itu baik:
- Jika Anda perlu menyimpan teks besar di database Anda
- Jika Anda tidak mencari pada nilai kolom
- Jika Anda memilih kolom ini jarang dan jangan bergabung di dalamnya.
VARCHAR itu baik:
- Jika Anda menyimpan string kecil
- Jika Anda mencari pada nilai string
- Jika Anda selalu memilih atau menggunakannya dalam gabungan.
Dengan memilih di sini, saya bermaksud mengeluarkan pertanyaan apa pun yang mengembalikan nilai kolom.
Dengan mencari di sini, saya bermaksud mengeluarkan pertanyaan apa pun yang hasilnya tergantung pada nilai kolom TEXTatau VARCHAR. Ini termasuk menggunakannya dalam kondisi JOINatau apa pun WHERE.
Karena TEXTdisimpan di luar baris, kueri yang tidak melibatkan TEXTkolom biasanya lebih cepat.
Beberapa contoh apa TEXTyang baik untuk:
- Komentar blog
- Halaman wiki
- Sumber kode
Beberapa contoh apa VARCHARyang baik untuk:
- Nama pengguna
- Judul halaman
- Nama file
Sebagai aturan praktis, jika Anda membutuhkan nilai teks melebihi 200 karakter DAN jangan gunakan gabung di kolom ini, gunakan TEXT.
Kalau tidak gunakan VARCHAR.
PS Hal yang sama berlaku untuk UNICODEdiaktifkan NTEXTdan NVARCHARjuga, yang harus Anda gunakan untuk contoh di atas.
PPS Hal yang sama berlaku untuk VARCHAR(MAX)dan NVARCHAR(MAX)yang digunakan oleh SQL Server 2005+ alih-alih TEXTdan NTEXT. Anda harus mengaktifkannya large value types out of rowdengan sp_tableoptionjika Anda ingin mereka selalu disimpan di luar baris.
Seperti yang disebutkan di atas dan di sini , TEXTakan ditinggalkan dalam rilis mendatang:
The text in rowpilihan akan dihapus dalam versi masa depan dari SQL Server . Hindari menggunakan opsi ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini digunakan text in row. Kami menyarankan Anda menyimpan data yang besar dengan menggunakan varchar(max), nvarchar(max)atau varbinary(max)tipe data. Untuk mengontrol perilaku tipe data ini in-line dan out-of-row, gunakan large value types out of rowopsi.