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

Bagaimana cara memberi tahu Pengoptimal MySQL untuk menggunakan indeks pada tabel turunan?

Ada solusi untuk ini di MySQL Server 5.6 - rilis pratinjau (pada saat penulisan ini).

http://dev.mysql.com /doc/refman/5.6/en/from-clause-subquery-optimization.html

Meskipun, saya tidak yakin apakah Pengoptimal MySQL akan menggunakan kembali indeks yang sudah ada ketika "menambahkan indeks ke tabel turunan"

Pertimbangkan pertanyaan berikut:

SELECT * FROM t1JOIN (SELECT * FROM t2) SEBAGAI turunan_t2 PADA t1.f1=derived_t2.f1;

Dokumentasi mengatakan:"Pengoptimal membuat indeks di atas kolom f1 dari turunan_t2 jika melakukannya akan mengizinkan penggunaan akses referensi untuk rencana eksekusi dengan biaya terendah."

Oke, itu bagus, tetapi apakah pengoptimal menggunakan kembali indeks dari t2? Dengan kata lain, bagaimana jika ada indeks untuk t2.f1? Apakah indeks ini digunakan kembali, atau apakah pengoptimal membuat ulang indeks ini untuk tabel turunan? Siapa yang tahu?

EDIT: Solusi terbaik hingga MySQL 5.6 adalah membuat tabel sementara, membuat indeks pada tabel tersebut, dan kemudian menjalankan kueri SELECT pada tabel sementara.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengunggah beberapa file gambar ke galeri php mysql

  2. MySQL - berapa lama membuat indeks?

  3. Menghubungkan ke DB dari Ekstensi Chrome?

  4. Memformat stempel waktu

  5. Kirim ArrayList dari android ke php MySQL