Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan MySQL Saya Menyebabkan Jadual dan Filesort Sementara?

Mengapa Pertanyaan MySQL Saya Menyebabkan Jadual dan Filesort Sementara?

Patricia Arquette
Lepaskan: 2024-11-04 08:50:02
asal
626 orang telah melayarinya

Why Does My MySQL Query Cause Temporary Tables and Filesort?

Masalah dengan Temporary dan Filesort dalam MySQL: Skema dan Analisis Pertanyaan

Dalam sistem penjejakan acara dengan jadual carian dan jadual log, isu timbul dengan pertanyaan yang bertujuan untuk memaparkan statistik objek dalam urutan kepentingan menurun. Walaupun pertanyaan berfungsi dengan betul dengan bilangan entri yang kecil, keputusan EXPLAINnya mencadangkan potensi untuk pengoptimuman.

Pertanyaan yang dimaksudkan menggunakan gabungan kiri antara jadual event_log dan lookup_event_objects, mengumpulkan hasil mengikut object_id dan mengisih mengikut count_rows dalam tertib menurun, diikuti dengan object_desc dalam tertib menaik. Walau bagaimanapun, pertanyaan ini menjana amaran tentang menggunakan jadual sementara dan isihan fail.

MySQL menggunakan jadual sementara apabila pertanyaan mengandungi klausa ORDER BY yang berbeza daripada klausa GROUP BY, atau apabila mengisih atau mengumpulkan dirujuk daripada jadual selain daripada yang pertama dalam penyertaan. Dalam kes ini, pengisihan adalah berdasarkan medan yang dikira, menjadikan penggunaan indeks mustahil, oleh itu penggunaan failsort.

Untuk menangani isu tersebut, alih keluar klausa ORDER BY untuk leo.object_desc. Ini akan menghapuskan keperluan untuk jadual sementara dan penyisihan fail, meningkatkan prestasi pertanyaan:

<code class="sql">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;</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Saya Menyebabkan Jadual dan Filesort Sementara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan