遅い MySQL クエリのトラブルシューティング: パフォーマンスのためのインデックス作成
大規模な MySQL テーブルを操作する場合、効率的なデータ取得のためにクエリを最適化することが不可欠です。インデックスを追加すると、列の値に基づいて特定のデータ ポイントにすばやくアクセスできるため、クエリのパフォーマンスが大幅に向上します。
指定されたシナリオでは、product_id フィールドを含むクエリは、インデックスがあるにもかかわらず、実行速度が遅くなります。 EXPLAIN の結果を調べると、インデックス付きフィールドと検索条件の間にデータ型が一致していないことがわかります。
解決策 1: データ型の互換性を確認する
インデックスのデータ型が検索条件のデータ型と一致していることを確認してください。この場合、id フィールドは整数 (INT) として保存され、product_id フィールドは文字列 (VARCHAR) として保存されます。この型の不一致により、パフォーマンスの問題が発生する可能性があります。
推奨アクション: クエリ内の product_id の前後の一重引用符 (') を削除します。 MySQL は文字列を自動的に整数にキャストし、インデックスを効果的に使用できるようにします。
解決策 2: 製品 ID のインデックスを追加
データ型の互換性がすでに確認されているため、product_id フィールド専用のインデックスを作成します。これにより、product_id 値に基づいて行に直接アクセスできるようになり、クエリのパフォーマンスが大幅に向上します。
構文:
ALTER TABLE `table` ADD INDEX `product_id_index` (`product_id`);
次の手順に従うことで、MySQL テーブルを最適化できます。非プライマリ インデックス フィールドで検索する場合でも、クエリを使用してデータをより高速に取得できます。
以上がインデックス付き MySQL クエリが依然として遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。