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

Apakah MySQL menggunakan indeks yang ada untuk membuat indeks baru?

Tidak, tidak akan.

Secara teoritis, indeks pada (site, product, value, id) memiliki semua yang diperlukan untuk membuat indeks pada setiap subset bidang ini (termasuk indeks pada (product, value, id) dan (value, id) ).

Namun, membangun indeks dari indeks sekunder tidak didukung.

Pertama, MySQL tidak mendukung pemindaian indeks penuh yang cepat (yaitu memindai indeks dalam urutan fisik daripada logis), sehingga membuat jalur akses indeks lebih mahal daripada pembacaan tabel. Ini bukan masalah untuk InnoDB , karena tabel itu sendiri selalu berkelompok.

Kedua, urutan record dalam indeks ini benar-benar berbeda sehingga record tetap harus diurutkan.

Namun, masalah utama dengan kecepatan pembuatan indeks di MySQL adalah bahwa itu menghasilkan pesanan di situs (hanya memasukkan catatan satu per satu ke dalam B-Tree ) daripada menggunakan sumber yang telah dipilih sebelumnya. Seperti yang disebutkan @Daniel, pembuatan indeks cepat memecahkan masalah ini. Ini tersedia sebagai plugin untuk 5.1 dan sudah diinstal sebelumnya di 5.5 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pilih baris dengan Nilai Maks yang dikelompokkan berdasarkan dua kolom

  2. Pengguna tidak dapat mengakses database

  3. mysql bergabung dengan 3 tabel

  4. Apakah saya benar-benar perlu melakukan mysql_close()

  5. Hapus catatan duplikat dari tabel tanpa pk atau id atau kolom unik di mysql