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?
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?
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 nama text
tipe, tipe baru varchar
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 mengambil text
argumen atau kembali text
. Kedua tipe ini kompatibel dengan biner, jadi casting adalah operasi waktu-parse sepele. Tetapi menggunakan text
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. ;-)
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.
http://www.postgresql.org/docs/8.4/interactive/datatype-character.html
character varying(n), varchar(n) variable-length with limit
text variable unlimited length
teks tanpa panjang yang dinyatakan. Tidak ada perbedaan kinerja antara kedua jenis ini.