ホームページ  >  記事  >  データベース  >  プライマリ インデックスを使用しているにもかかわらず、「SELECT COUNT(*) FROMchange_event」クエリが非常に遅いのはなぜですか?

プライマリ インデックスを使用しているにもかかわらず、「SELECT COUNT(*) FROMchange_event」クエリが非常に遅いのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 22:43:29999ブラウズ

Why is my

インデックスの使用にもかかわらず、「SELECT COUNT(*)」クエリのパフォーマンスが遅い

コンテキスト:

クエリ「SELECT COUNT(*) FROM change_event me WHERE change_event_id > '1212281603783391';」 MySQL でのパフォーマンスが非常に遅く、実行に 1 分以上かかります。これは、「change_event_id」列に PRIMARY インデックスが存在するにもかかわらずです。

InnoDB クラスター化主キー:

InnoDB では、主キーはクラスター化されています。データページ内のデータ行と一緒に保存されます。これにより、範囲スキャン中に潜在的に大きな行データをスキャンする必要があり、パフォーマンスが低下する可能性があります。 「change_event」テーブルには TEXT 列が含まれており、行の幅がさらに広がります。

最適化テクニック:

  • テーブルの最適化: 「OPTIMIZE TABLE」を実行すると、データページを主キーでソートするように並べ替えることができます。これにより、クラスター化された主キーの範囲スキャンのパフォーマンスが向上する可能性があります。
  • 追加の非主インデックスの作成: 「change_event_id」列のみに非主インデックスを作成すると、値の範囲をより速くスキャンする方法。インデックスの作成後、Explain Plan をチェックして、その使用率を確認する必要があります。

追加の推奨事項:

  • データ型を調整します: 「change_event_id」列がゼロから増加している場合は、負の値を避けるためにそのデータ型を「bigint unsigned」に変更することを検討してください。

以上がプライマリ インデックスを使用しているにもかかわらず、「SELECT COUNT(*) FROMchange_event」クエリが非常に遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。