データ量が比較的多い場合、総数をカウントするにはどうすればよいですか?
たとえば、テーブルに 500 万個のデータがある場合、従来の方法は count() であり、非常に非効率的です。
インターネット上の一部の人々は、統計結果を結果テーブルに挿入するために mysql トリガーを使用していると言っています。
他の方法はありますか?たとえば、MySQL 結果テーブルに非同期実行を挿入することは可能ですか?
それとも統計結果を Redis に入れることができますか?
スケジュール実行を使用するという話もありますが、私たちの使用シナリオではリアルタイムで合計を計算する必要があります。
データ量が比較的多い場合、総数をカウントするにはどうすればよいですか?
たとえば、テーブルに 500 万個のデータがある場合、従来の方法は count() であり、非常に非効率的です。
1. インターネット上の誰かが、統計結果を結果テーブルに挿入するために mysql トリガーを使用すると言いました。
他の方法はありますか?たとえば、MySQL 結果テーブルに非同期実行を挿入することは可能ですか?
2. それとも統計結果を Redis に入れることができますか?
スケジュール実行を使用するという話もありますが、私たちの使用シナリオではリアルタイムで合計を計算する必要があります。
3. 行番号情報を保存するテーブルを新規作成できます
テーブル名(主キー)のデータ量
トリガー中にデータが挿入された場合、対応するテーブルのデータ量は+1されます。削除すると 1 減ります。
4. 別のオプションは、(ビジネスのリアルタイム要件に従って) 毎回 1 分の増分のみを計算することです。最後の統計値に 1 分の増分を加えたものが現在の合計になります。もちろん、これは古いデータが削除されているかどうかによって異なります。この方法は、統計結果をテーブルに挿入することと組み合わせることができると思います。
私は保存、挿入+1、削除-1にredisを使用する傾向があります。 DB への負荷はなく、同時にカップリングも軽減されます。memcache または Redis を使用してカウントするだけです。
カウントを確認する必要がある場合は、最初に memcache を確認してください。そうでない場合は、データベースのカウントに移動してから、memcache を設定します。次回 memcache を確認する場合は、そこにあるので、行う必要はありません。カウント。
上記は比較的大量のデータですが、統計関数をより適切に実装するにはどうすればよいでしょうか?関連コンテンツの詳細については、PHP 中国語 Web サイト (www.php.cn) にご注意ください!