頻繁に更新 (挿入/削除) されるテーブルがあります。テーブルに保存されているレコードの数を定期的にカウントするスクリプトもあります。どうすればパフォーマンスを最適化できますか?
- 何もしない: COUNT 関数を使用するだけです。
- レコード数を格納する別のフィールドを作成します。新しいレコードが追加されるたびに、そのフィールドを増やします。その逆も同様です。
頻繁に更新 (挿入/削除) されるテーブルがあります。テーブルに保存されているレコードの数を定期的にカウントするスクリプトもあります。どうすればパフォーマンスを最適化できますか?
方法 2 は、ほぼ標準的な方法です (テーブルが非常に大きく、COUNT
パフォーマンスの問題が発生している場合)。取得を非常に高速にするテーブルにCOUNT
値を格納することもできます。MEMORY
必要に応じて増減します。
正確な数値が必要な場合は、これをアプリに組み込んでデータベースを更新するか、トリガーを使用してカウントを最新の状態に保ちます。他の人が述べたように、パフォーマンスと永続性が必要な場合は、カウントを MEMORY テーブルまたは Redis インスタンスに保持できます。INFORMATION_SCHEMA.TABLES テーブルにはカウントがありますが、InnoDB では正確ではありません (+-20% 以上)。