Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Haruskah kolom VARCHAR diletakkan di akhir definisi tabel di MySQL?

Mengajukan pertanyaan tentang "MySQL" itu tidak membantu, karena MySQL mengalihkan penyimpanan ke mesin penyimpanan, dan mereka mengimplementasikan penyimpanan dengan cara yang sangat berbeda. Masuk akal untuk mengajukan pertanyaan ini untuk setiap mesin penyimpanan individu.

Di mesin MEMORY, tipe data panjang variabel tidak ada. VARCHAR diam-diam diubah menjadi CHAR. Dalam konteks pertanyaan Anda:Tidak masalah di mana dalam definisi tabel Anda meletakkan VARCHAR Anda.

Di mesin MyISAM, jika sebuah tabel tidak memiliki data panjang variabel apa pun (VARCHAR, VARBINARY atau jenis TEXT atau BLOB) itu adalah varian FIXED dari MyISAM, yaitu, catatan memiliki panjang byte tetap. Ini dapat memiliki implikasi kinerja, terutama jika data dihapus dan dimasukkan berulang kali (yaitu tabel tidak hanya ditambahkan). Segera setelah tipe data panjang variabel apa pun menjadi bagian dari definisi tabel, itu menjadi varian DYNAMIC dari MyISAM, dan MyISAM secara internal mengubah apa pun kecuali tipe CHAR terpendek secara internal ke VARCHAR. Sekali lagi, posisi dan bahkan definisi CHAR/VARCHAR tidak penting.

Di mesin InnoDB, data disimpan di halaman berukuran 16 KB. Halaman memiliki footer halaman dengan checksum, dan header halaman, dengan antara lain direktori halaman. Direktori halaman berisi untuk setiap baris offset baris tersebut relatif terhadap awal halaman. Sebuah halaman juga berisi ruang kosong, dan semua I/O dilakukan di halaman.

Karenanya InnoDB dapat, selama ada ruang kosong di halaman, menumbuhkan VARCHAR di tempatnya, dan memindahkan baris di dalam halaman, tanpa menimbulkan I/O tambahan. Juga, karena semua baris dialamatkan sebagai (nomor halaman, entri direktori halaman), pergerakan baris di dalam halaman dilokalkan ke halaman dan tidak terlihat dari luar.

Ini juga berarti bahwa untuk InnoDB juga, urutan kolom di dalam baris tidak menjadi masalah sama sekali.

Ini adalah tiga mesin penyimpanan yang paling umum digunakan dengan MySQL, dan urutan kolom tidak menjadi masalah untuk ketiganya. Mungkin ada mesin penyimpanan lain yang lebih eksotis yang tidak benar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara -> dan ::di PHP MySQLi OOP

  2. Menyimpan XML dalam Database untuk Konten Fleksibel

  3. Karakter khusus di PHP / MySQL

  4. Tabel dengan 80 juta catatan dan menambahkan indeks membutuhkan waktu lebih dari 18 jam (atau selamanya)! Sekarang apa?

  5. PDO::Query() mengembalikan false