MySQL での行カウントの高速化: パフォーマンス向上のためのテクニックの探索
大きな MySQL テーブルの行カウントは時間のかかる作業になる場合があります、特にテーブルに数百万行が含まれている場合。関連する列にインデックスが存在するにもかかわらず、行数のクエリの実行には数秒かかる場合があります。
このシナリオでは、テーブル内のステータスごとに行をカウントするクエリを高速化するという課題を検討します。次の列:
InnoDB と MyISAM ストレージ エンジンの両方を使用して、200 万行のテーブルでこのようなクエリのパフォーマンスをテストした結果、次のことがわかりました。その結果:
MyISAM はパフォーマンスに若干の利点をもたらしますが、行数を増やす必要があるシナリオには依然として不十分です。低トラフィックの Web ページ リクエストなど、非常に短い時間枠内で計算されるsite.
残念ながら、代替技術に頼らずに直接行カウントクエリのパフォーマンスを劇的に向上させる簡単な方法はありません。実行可能なオプションの 1 つは、各ステータスの行数を追跡する要約テーブルを維持することです。この概要テーブルはトリガーを介して更新できるため、書籍のステータスが変化するたびにカウントが適切に調整されます。
このソリューションは、直接取得するため、メイン テーブルのサイズに関係なく、即時のクエリ応答を提供します。概要テーブルからの情報の一部。トリガーを利用することで、概要テーブルのメンテナンスが自動化され、キャッシュや明示的な更新の必要がなくなります。
トリガーに関連する追加のオーバーヘッドにもかかわらず、ほぼ瞬時に行をカウントできる利点は、潜在的なパフォーマンスへの影響を上回ります。サマリー テーブルのアプローチを利用することで、行カウントに関連するパフォーマンスの問題に対処でき、リアルタイムのユースケースに適したものになります。
以上がMySQL での行カウント クエリを高速化し、ほぼ瞬時の結果を得るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。