Googling di sekitar sana tampaknya laporan campuran apakah ukuran VARCHAR2
kolom di Oracle berdampak pada kinerja atau tidak.
Saya ingin memberikan pertanyaan tentang VARCHAR
ukuran twist kecil dan berharap untuk mendapatkan beberapa wawasan tentang ini:
Diberikan (multiline) bidang teks bebas ( bukan hal pendek seperti nama) yang ingin Anda simpan dalam database (Oracle), apakah ada gunanya (kinerja wrt. Atau sebaliknya) dalam tidak memaksimalkan VARCHAR
kapasitas ( VARCHAR2(4000)
pada Oracle) tetapi memilih nilai yang lebih kecil seperti 1024 atau 512 karena itu kemungkinan akan cukup dalam 98% kasus.
oracle
performance
varchar
Martin
sumber
sumber
Jawaban:
Itu berdampak penggunaan memori, terutama ketika program klien harus mengalokasikan cukup memori untuk menerima dataset.
Ingatlah bahwa banyak aplikasi (terutama aplikasi web) menggunakan UTF-8 yang merupakan rangkaian karakter multi-byte. Karena itu, Anda harus benar-benar mempertimbangkan karakter daripada byte.
Jika saya mengharapkan lebih dari seribu karakter, maka saya akan secara aktif mempertimbangkan CLOB. Saya akan berpikir tentang apakah itu akan menyimpan teks biasa atau beberapa bentuk markup (wiki / html?), Penggunaan dengan bahasa non-Euro. Pertanyaan dan Jawaban di sini, misalnya, adalah CLOB, tetapi komentar dapat ditampung dalam VARCHAR.
Jika Anda memaksimalkan VARCHAR, maka dalam enam bulan seseorang akan ingin membuatnya lebih besar lagi, dan Anda akan menendang diri sendiri karena tidak menggunakan CLOB.
sumber
Secara umum tidak ada pertimbangan kinerja meskipun ada masalah sampingan yang mungkin penting bagi Anda. Batas untuk
varchar
harus dianggap sebagai kendala seperti yang lain - itu ada untuk menegakkan aturan bisnis.IMO pertanyaan yang harus Anda tanyakan adalah "Apakah saya ingin mencegah data teks bebas yang disimpan dalam bidang ini lebih panjang dari n byte / karakter" - itu adalah satu-satunya faktor penentu ketika memilih antara
varchar(512)
danvarchar(4000)
.Perhatikan bahwa saya berasumsi Anda berbicara tentang
varchar
tipe SQL - situasinya berbeda denganpl/sql
dan memilih panjangnya dapat menjadi penting karena alasan alokasi memori.sumber
clob
, bukan?Jika nilai yang lebih kecil akan bekerja untuk 98% kasus, tetapi dibutuhkan Varchar2 (4000) untuk bekerja untuk 100% kasus, maka Anda memiliki sedikit pilihan selain menggunakan nilai yang lebih besar . Membuat tabel terpisah untuk 2% dari nilai-nilai dan kemudian mengoordinasikan sisipan / pilih dll. Akan menambah kompleksitas yang akan melenyapkan setiap memori atau manfaat kinerja dari tidak memperluas bidang.
sumber