如何最佳化 MySQL 查詢並出現「使用索引;使用臨時;使用檔案排序」錯誤?

Linda Hamilton
發布: 2024-11-04 11:15:29
原創
767 人瀏覽過

How to Optimize MySQL Queries with

處理MySQL 查詢中的「使用索引;使用臨時;使用檔案排序」錯誤

使用MySQL 查詢到警告「使用索引;使用臨時;使用檔案排序。」此訊息表明MySQL 依賴臨時表和檔案排序操作,這可能會影響效能。

在這種特殊情況下,查詢會遇到兩個效能問題:

  1. 使用臨時表: 查詢包含一個ORDER BY 子句,其中包含不同的GROUP BY 子句和多個表中的欄位。這會觸發 MySQL 建立臨時表。
  2. 使用檔案排序: ORDER BY 子句按計算欄位排序,無法使用索引執行此操作。因此,MySQL 求助於使用文件排序。

要解決這些問題:

  • 對於臨時表問題:避免使用不同的ORDER BY 和GROUP BY 子句或在這些子句中使用同一表中的列。
  • 對於檔案排序問題: 嘗試在 ORDER BY 子句中使用的計算欄位上建立索引。

這是查詢的最佳化版本:

    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
登入後複製

透過消除臨時表和檔案排序操作的使用,此修改後的查詢應該會提高效能。

以上是如何最佳化 MySQL 查詢並出現「使用索引;使用臨時;使用檔案排序」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!