Yang saya tahu tentang perbedaan adalah varchar
ada batasnya, dan text
tidak. The dokumentasi tidak menyebutkan tentang hal ini.
Apakah itu satu-satunya perbedaan? Tidak ada pertimbangan tentang kinerja atau sebagainya?
database
postgresql
Eonil
sumber
sumber
Jawaban:
Latar belakangnya adalah: Sistem Postgres lama menggunakan bahasa PostQUEL dan menggunakan tipe data bernama
text
(karena seseorang berpikir itu nama yang bagus untuk tipe yang menyimpan teks). Kemudian, Postgres dikonversi untuk menggunakan SQL sebagai bahasanya. Untuk mencapai kompatibilitas SQL, alih-alih mengganti namatext
tipe, tipe baruvarchar
ditambahkan. Tetapi kedua jenis menggunakan rutin C yang sama secara internal.Sekarang, untuk beberapa derajat dan di beberapa tempat,
text
hardcoded sebagai tipe default, kalau-kalau tidak ada lagi yang bisa diturunkan. Juga, sebagian besar fungsi hanya tersedia sebagai mengambiltext
argumen atau kembalitext
. Kedua tipe ini kompatibel dengan biner, jadi casting adalah operasi waktu-parse sepele. Tetapi menggunakantext
keseluruhan masih lebih alami untuk sistem.Tetapi selain dari poin-poin bagus ini, tidak ada perbedaan yang nyata. Gunakan mana pun yang terlihat lebih cantik untuk Anda. ;-)
sumber
Lihat pertanyaan serupa ini . Intinya adalah bahwa tidak ada perbedaan, tetapi menentukan panjang maksimum seperti
varchar(n)
umumnya tidak menguntungkan Anda, karena menggunakan lebih banyak ruang tetapi tidak meningkatkan kinerja.sumber
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
teks tanpa panjang yang dinyatakan. Tidak ada perbedaan kinerja antara kedua jenis ini.
sumber