Apa perbedaan antara tipe "varchar" dan "teks" di PostgreSQL?


15

Yang saya tahu tentang perbedaan adalah varcharada batasnya, dan texttidak. The dokumentasi tidak menyebutkan tentang hal ini.

Apakah itu satu-satunya perbedaan? Tidak ada pertimbangan tentang kinerja atau sebagainya?


1
Ini benar-benar harus dimigrasikan ke Administrator Database . Tidak ada hubungannya dengan administrasi server.
Evan Carroll

Jawaban:


22

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 texttipe, tipe baru varcharditambahkan. Tetapi kedua jenis menggunakan rutin C yang sama secara internal.

Sekarang, untuk beberapa derajat dan di beberapa tempat, texthardcoded sebagai tipe default, kalau-kalau tidak ada lagi yang bisa diturunkan. Juga, sebagian besar fungsi hanya tersedia sebagai mengambil textargumen atau kembali text. Kedua tipe ini kompatibel dengan biner, jadi casting adalah operasi waktu-parse sepele. Tetapi menggunakan textkeseluruhan 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. ;-)


Oh penjelasan yang bagus. Saya akan menggunakan 'teks' karena saya tidak peduli tentang kompatibilitas yang menghalangi penggunaan produk tertentu. Terima kasih!
Eonil

1

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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.