TEXT
digunakan untuk potongan besar data string. Jika panjang bidang melebihi ambang tertentu, teks disimpan di luar baris.
VARCHAR
selalu 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 MAX
ini bukan jenis konstanta di sini, VARCHAR
dan VARCHAR(MAX)
merupakan tipe yang sangat berbeda, yang terakhir sangat dekat TEXT
.
Dalam versi SQL Server sebelumnya Anda tidak dapat mengakses TEXT
secara langsung, Anda hanya bisa mendapatkan TEXTPTR
dan menggunakannya di READTEXT
danWRITETEXT
fungsinya.
Di SQL Server 2005 Anda dapat langsung mengakses TEXT
kolom (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 TEXT
atau VARCHAR
. Ini termasuk menggunakannya dalam kondisi JOIN
atau apa pun WHERE
.
Karena TEXT
disimpan di luar baris, kueri yang tidak melibatkan TEXT
kolom biasanya lebih cepat.
Beberapa contoh apa TEXT
yang baik untuk:
- Komentar blog
- Halaman wiki
- Sumber kode
Beberapa contoh apa VARCHAR
yang 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 UNICODE
diaktifkan NTEXT
dan NVARCHAR
juga, 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 TEXT
dan NTEXT
. Anda harus mengaktifkannya large value types out of row
dengan sp_tableoption
jika Anda ingin mereka selalu disimpan di luar baris.
Seperti yang disebutkan di atas dan di sini , TEXT
akan ditinggalkan dalam rilis mendatang:
The text in row
pilihan 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 row
opsi.