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

Di MySQL, bagaimana cara membangun indeks untuk mempercepat kueri ini?

Untuk benar-benar memberikan jawaban, akan berguna untuk melihat apakah Anda sudah memiliki indeks, tapi...

Semua ini dengan asumsi tabel 't' ada dan Anda perlu menambahkan indeks dan saat ini Anda hanya memiliki satu indeks pada kunci utama Anda atau tidak ada indeks sama sekali.

Indeks penutup untuk kueri akan memberikan kinerja terbaik untuk kebutuhan Anda, tetapi dengan indeks apa pun Anda mengorbankan beberapa kecepatan penyisipan. Seberapa penting pengorbanan itu bergantung pada profil aplikasi Anda. Jika Anda membaca sebagian besar dari tabel, itu tidak masalah. Jika Anda hanya memiliki beberapa indeks, bahkan beban tulis yang moderat pun tidak masalah. Ruang penyimpanan terbatas untuk meja Anda mungkin juga ikut berperan... Anda perlu membuat evaluasi akhir dari tradeoff dan jika terlihat. Hal yang baik adalah hit yang cukup konstan. Biasanya, menambahkan indeks tidak memperlambat sisipan Anda secara eksponensial, hanya secara linier.

Terlepas dari itu, berikut adalah opsi Anda untuk kinerja pilihan terbaik:

  1. Jika c3 adalah kunci utama Anda untuk tabel t, Anda tidak dapat melakukan sesuatu yang lebih baik dalam kueri untuk membuatnya lebih cepat dengan indeks.
  2. Dengan asumsi c1 adalah kunci utama Anda t:

    ALTER TABLE t ADD INDEX covering_index (c3,c2);  
    
  3. Jika c1 bukan pk Anda (dan juga c2), gunakan ini:

    ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);  
    
  4. Jika c2 adalah PK Anda, gunakan ini:

    ALTER TABLE t ADD INDEX covering_index (c3,c1);  
    
  5. Jika ruang pada disk atau kecepatan penyisipan menjadi masalah, Anda dapat memilih untuk melakukan indeks titik. Anda akan mengorbankan beberapa kinerja, tetapi jika Anda memasukkan berat, itu mungkin pilihan yang tepat:

    ALTER TABLE t ADD INDEX a_point_index (c3);  
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipkan ke semua sel saat catatan lebih dari satu PHP

  2. Cara membuat General Ledger/T-Account menggunakan PHP Mysql

  3. MySQL :Ketika nama parameter prosedur tersimpan sama dengan nama kolom tabel

  4. Kombinasi pencarian lapangan menggunakan PHP &MYSQL

  5. MySQL mengimpor database tetapi mengabaikan tabel tertentu