問題:
大きなテーブル内の行数をカウントするための MySQL クエリまたは特定の列でグループ化すると、テーブルが大きくなるにつれて速度が遅くなる可能性があります。グループ化に使用される列にインデックスを付けても、一貫してパフォーマンスが向上するわけではありません。
探索:
これらのクエリを最適化するには、キャッシュを使用しない代替アプローチとして次のものが挙げられます。
実装:
概要テーブルを維持するには、次の定型トリガーを使用できます。
DELIMITER // CREATE TRIGGER ai_books AFTER INSERT ON books FOR EACH ROW UPDATE books_cnt SET total = total + 1 WHERE status = NEW.status // CREATE TRIGGER ad_books AFTER DELETE ON books FOR EACH ROW UPDATE books_cnt SET total = total - 1 WHERE status = OLD.status; // CREATE TRIGGER au_books AFTER UPDATE ON books FOR EACH ROW BEGIN IF (OLD.status <> NEW.status) THEN UPDATE books_cnt SET total = total + IF(status = NEW.status, 1, -1) WHERE status IN (OLD.status, NEW.status); END IF; END //
サマリーテーブルを維持することで、テーブルに関係なく、行カウントクエリをより高速に実行できます。サイズ。
以上が大規模な MySQL テーブルでの行カウント クエリを高速化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。