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

Ketika Anda memiliki bidang TEXT di MySQL atau PostgreSQL, haruskah Anda meletakkannya di tabel terpisah?

Tidak dengan PostgreSQL, dari manual :

Jadi kolom karakter besar (seperti TEXT atau VARCHAR tanpa batas ukuran yang ditentukan) disimpan jauh dari data tabel utama. Jadi, PostgreSQL memiliki pengoptimalan "meletakkannya di tabel terpisah" di dalamnya. Jika Anda menggunakan PostgreSQL, atur tabel Anda dengan bijaksana dan serahkan tata letak data ke PostgreSQL.

Saya tidak tahu bagaimana MySQL atau RDBM lain mengatur datanya.

Alasan di balik optimasi ini adalah bahwa database biasanya akan menyimpan data untuk setiap baris dalam blok yang berdekatan pada disk untuk mengurangi pencarian ketika baris perlu dibaca atau diperbarui. Jika Anda memiliki kolom TEXT (atau jenis panjang variabel lainnya) dalam satu baris, maka ukuran barisnya bervariasi sehingga diperlukan lebih banyak pekerjaan untuk berpindah dari baris ke baris. Analoginya adalah perbedaan antara mengakses sesuatu dalam daftar tertaut versus mengakses larik; dengan daftar tertaut, Anda harus membaca tiga elemen satu per satu untuk mendapatkan yang keempat, dengan array yang baru saja Anda offset 3 * element_size byte dari awal dan Anda sudah siap dalam satu langkah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih baris MYSQL dengan nama bidang yang sama dan menambahkan awalan

  2. iterator/generator SqlAlchemy built-in yang hemat memori?

  3. Pilih record aktif codeigniter, gabung kiri, hitung

  4. Bagaimana cara membandingkan dua hasil kueri untuk kesetaraan di MySQL?

  5. mysql ERROR 2002 (HY000):Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)