首頁 >資料庫 >mysql教程 >資料庫重組如何優化緩慢的 MySQL 查詢並消除磁碟 I/O?

資料庫重組如何優化緩慢的 MySQL 查詢並消除磁碟 I/O?

Susan Sarandon
Susan Sarandon原創
2024-12-30 14:44:171004瀏覽

How Can Database Restructuring Optimize a Slow MySQL Query and Eliminate Disk I/O?

最佳化MySQL 查詢以減少執行時間並消除磁碟 I/O

在典型的Web 應用場景中,資料庫查詢的效能對於保持響應式的使用者體驗至關重要。本文解決了一個特定的 MySQL 查詢,該查詢執行時間緩慢,導致網站效能不佳。

相關查詢連接三個表:「poster_data」、「poster_categories」和「poster_prodcat」。它的目的是根據“poster_prodcat”表上的特定條件從表中檢索資料。查詢執行計劃揭示了「poster_prodcat」表的參與及其寫入磁碟的情況,顯示資料檢索效率低。

為了解決效能問題,我們探索了一種涉及重組資料庫和查詢的替代方法。具體來說,我們創建了名為「poster」、「category」和「poster_category」的新表。 「poster_category」表在 (cat_id, poster_id) 欄位上設計有聚集複合索引。

使用這個新架構,我們重寫了原始查詢,如下所示:

SELECT
    p.*,
    c.*
FROM
    poster_category pc
INNER JOIN
    category c ON pc.cat_id = c.cat_id
INNER JOIN
    poster p ON pc.poster_id = p.poster_id
WHERE
    pc.cat_id = 623
ORDER BY
    p.name
LIMIT
    32;

重寫查詢的 EXPLAIN 計劃揭示了效能的顯著改進。查詢現在有效地使用索引,減少了對磁碟 I/O 的需求並最大限度地減少了執行時間。

以上是資料庫重組如何優化緩慢的 MySQL 查詢並消除磁碟 I/O?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn