TEXT
digunakan untuk potongan data string yang besar. Jika panjang bidang melebihi ambang batas tertentu, teks akan 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 menyangkut VARCHAR(MAX)
di SQL Server 2005 , yang mungkin disimpan di luar baris, seperti TEXT
.
Perhatikan bahwa MAX
bukan semacam konstanta di sini, VARCHAR
dan VARCHAR(MAX)
adalah tipe yang sangat berbeda, yang terakhir sangat dekat dengan TEXT
.
Di versi SQL Server sebelumnya Anda tidak dapat mengakses TEXT
langsung, Anda hanya bisa mendapatkan TEXTPTR
dan gunakan di READTEXT
dan WRITETEXT
fungsi.
Di SQL Server 2005 Anda dapat langsung mengakses TEXT
kolom (meskipun Anda masih memerlukan pemeran eksplisit ke VARCHAR
untuk menetapkan nilai bagi mereka).
TEXT
bagus:
- Jika Anda perlu menyimpan teks besar di database Anda
- Jika Anda tidak mencari nilai kolom
- Jika Anda jarang memilih kolom ini dan tidak bergabung di dalamnya.
VARCHAR
bagus:
- Jika Anda menyimpan string kecil
- Jika Anda mencari nilai string
- Jika Anda selalu memilihnya atau menggunakannya untuk bergabung.
Dengan memilih di sini maksud saya mengeluarkan pertanyaan apa pun yang mengembalikan nilai kolom.
Dengan mencari di sini maksud saya mengeluarkan pertanyaan apa pun yang hasilnya bergantung pada nilai TEXT
atau VARCHAR
kolom. Ini termasuk menggunakannya di JOIN
any atau WHERE
kondisi.
Sebagai TEXT
disimpan di luar baris, kueri tidak melibatkan TEXT
kolom biasanya lebih cepat.
Beberapa contoh TEXT
baik untuk:
- Komentar blog
- Halaman Wiki
- Sumber kode
Beberapa contoh VARCHAR
baik untuk:
- Nama pengguna
- Judul halaman
- Nama file
Sebagai aturan praktis, jika Anda membutuhkan nilai teks melebihi 200 karakter DAN jangan gunakan join pada kolom ini, gunakan TEXT
.
Jika tidak, gunakan VARCHAR
.
P.S. Hal yang sama berlaku untuk UNICODE
mengaktifkan NTEXT
dan NVARCHAR
juga, yang harus Anda gunakan untuk contoh di atas.
P.P.S. Hal yang sama berlaku untuk VARCHAR(MAX)
dan NVARCHAR(MAX)
bahwa SQL Server 2005+ menggunakan alih-alih TEXT
dan NTEXT
. Anda harus mengaktifkan large value types out of row
untuk mereka dengan sp_tableoption
jika Anda ingin mereka selalu disimpan di luar baris.
Seperti disebutkan di atas dan di sini , TEXT
akan ditinggalkan dalam rilis mendatang:
text in row
opsi akan dihapus di versi SQL Server yang akan datang . Hindari menggunakan opsi ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakantext in row
. Kami menyarankan Anda menyimpan data besar dengan menggunakanvarchar(max)
,nvarchar(max)
, atauvarbinary(max)
tipe data. Untuk mengontrol perilaku in-row dan out-of-row dari tipe data ini, gunakanlarge value types out of row
pilihan.