Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengapa Oracle varchar2 memiliki ukuran wajib sebagai parameter definisi?

Tidak, itu sama sekali bukan hal yang sama.

  1. Panjang kolom adalah metadata yang berguna bagi pengembang yang membuat layar.
  2. Alat kueri otomatis yang serupa seperti TOAD dan Pengembang SQL menggunakan panjang kolom saat merender hasil.
  3. Basis data menggunakan panjang variabel saat mengalokasikan memori untuk koleksi PL/SQL. Saat memori keluar dari ukuran PGA, deklarasi variabel dapat menyebabkan program gagal karena server kehabisan memori.
  4. Ada masalah serupa dengan deklarasi variabel tunggal dalam program PL/SQL, hanya saja koleksi cenderung melipatgandakan masalah.
  5. Kolom berukuran besar menimbulkan masalah untuk indeks gabungan. Berikut ini ada di database dengan 8K blok

....

SQL> create table t23 (col1 varchar2(4000), col2 varchar2(4000))
  2  /

Table created.

SQL> create index t23_i on t23(col1,col2)
  2  /
create index t23_i on t23(col1,col2)
                      *
ERROR at line 1:
ORA-01450: maximum key length (6398) exceeded


SQL>

Tetapi di atas segalanya, ukuran kolom adalah bentuk pemeriksaan kesalahan. Jika kolom seharusnya sepuluh karakter dan beberapa proses otonom mencoba memuat seribu karakter, maka ada sesuatu yang salah. Prosesnya seharusnya gagal, jadi kami dapat menyelidiki mengapa kami memuat data duff. Alternatifnya adalah database yang penuh dengan sampah, dan jika itu yang diinginkan, kita seharusnya memberikan Excel kepada semua orang dan menyelesaikannya.

Memang benar mengubah ukuran kolom yang ternyata kita anggap remeh bisa jadi melelahkan. Tapi itu tidak sering terjadi, dan kami dapat mengurangi banyak masalah dengan menggunakan deklarasi %TYPE dan SUBTYPE di PL/SQL kami alih-alih panjang variabel hard-coding.

Angka berbeda. Sebagai permulaan, ukuran maksimum angka jauh lebih kecil daripada teks yang setara (38 digit presisi dijamin).

Namun perbedaan utamanya adalah Oracle menyimpan nilai numerik di notasi ilmiah jadi tidak ada hubungan langsung antara ukuran aritmatika angka dan ruang penyimpanan yang digunakannya.

SQL> select vsize(123456789012345678901) n1
  2         , vsize(999999999999999999999999999999) n2
  3         , vsize(0.000000000000000000001) n3
  4         , vsize(1000000000000000000000000) n4
  5  from dual
  6  /

        N1         N2         N3         N4
---------- ---------- ---------- ----------
        12         16          2          2

SQL> 

Namun demikian, tetap merupakan praktik yang baik untuk menentukan skala dan presisi sedapat mungkin, terutama ketika kita berurusan dengan bilangan bulat, katakanlah, atau uang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan Indeks Virtual di Oracle Database

  2. cara mengirim parameter ke pemicu di Oracle

  3. Temukan kebocoran Koneksi di aplikasi Java

  4. Teks tampilan pencarian Oracle

  5. Cara memanggil blok anonim pl/sql dari blok anonim pl/sql