Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mengoptimumkan Pertanyaan MySQL dengan Ralat \"Menggunakan indeks; Menggunakan sementara; Menggunakan filesort\"?

Bagaimana untuk Mengoptimumkan Pertanyaan MySQL dengan Ralat \"Menggunakan indeks; Menggunakan sementara; Menggunakan filesort\"?

Linda Hamilton
Linda Hamiltonasal
2024-11-04 11:15:29769semak imbas

How to Optimize MySQL Queries with

Berurusan dengan "Menggunakan indeks; Menggunakan sementara; Menggunakan failsort" Ralat dalam Pertanyaan MySQL

Kebimbangan biasa apabila bekerja dengan pertanyaan MySQL dihadapi amaran, "Menggunakan indeks; Menggunakan sementara; Menggunakan failsort." Mesej ini menunjukkan bahawa MySQL bergantung pada jadual sementara dan operasi isih fail, yang boleh memberi kesan kepada prestasi.

Dalam kes khusus ini, pertanyaan mengalami dua isu prestasi:

  1. Menggunakan Jadual Sementara: Pertanyaan mengandungi klausa ORDER BY dengan klausa GROUP BY yang berbeza dan lajur daripada berbilang jadual. Ini mencetuskan MySQL untuk mencipta jadual sementara.
  2. Menggunakan Filesort: Klausa ORDER BY mengisih mengikut medan yang dikira, yang tidak boleh dilakukan menggunakan indeks. Oleh itu MySQL terpaksa menggunakan failsort.

Untuk menyelesaikan isu ini:

  • Untuk Isu Jadual Sementara: Elakkan daripada mempunyai klausa ORDER BY dan GROUP BY yang berbeza atau gunakan lajur daripada jadual yang sama dalam klausa ini.
  • Untuk Isu Isih Fail: Cuba buat indeks pada medan pengiraan yang digunakan dalam klausa ORDER BY.

Berikut ialah versi pertanyaan yang dioptimumkan:

    EXPLAIN SELECT 
            el.object_id, 
            leo.object_desc, 
            COUNT(el.object_id) as count_rows
        FROM 
            event_log el 
            LEFT JOIN lookup_event_objects leo ON leo.object_id = el.object_id
        GROUP BY 
            el.object_id
        ORDER BY 
            count_rows DESC,
            leo.object_desc ASC

Dengan menghapuskan penggunaan jadual sementara dan operasi isih fail, pertanyaan yang disemak ini seharusnya meningkatkan prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pertanyaan MySQL dengan Ralat \"Menggunakan indeks; Menggunakan sementara; Menggunakan filesort\"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn