ホームページ >データベース >mysql チュートリアル >データベースの再構築により、遅い MySQL クエリを最適化し、ディスク I/O を排除するにはどうすればよいですか?
実行時間を短縮し、ディスク I/O を排除するための MySQL クエリの最適化
典型的な Web アプリケーション シナリオでは、データベース クエリのパフォーマンスが応答性の高いユーザー エクスペリエンスを維持するために重要です。この記事では、実行時間が遅くなり、Web サイトのパフォーマンスが低下する特定の MySQL クエリについて説明します。
問題のクエリは、「poster_data」、「poster_categories」、および「poster_prodcat」の 3 つのテーブルを結合します。これは、「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 中国語 Web サイトの他の関連記事を参照してください。