前面に書かれた注文テーブル、アクセス記録テーブル、商品テーブルなど、日常生活でデータベースを操作するとき。 データ列の合計やデータ行の数を計算するなどの統計的な問題を頻繁に扱います。 ビジネスが発展するにつれて、これらのテーブルはどんどん大きくなります。適切に処理されない場合、統計のクエリ速度はどんどん遅くなり、ビジネスが耐えられなくなるまで遅くなります。 したがって、まずこれらのシナリオの知識ポイントを理解して検討し、設計の初期段階でビジネス開発をサポートするための最適化スペースを確保する必要があります。 SQL 集計関数MySQL やその他のデータでは、データの計算を容易にするために集計関数がサポートされています。 以下の方法が一般的です
いくつかの簡単な SQL ステートメントを示します。 u_id 100の注文の合計数を照会する u_id = 100 の注文から count(id) を選択します。 u_id 100の注文の合計消費量を照会する u_id = 100 の注文から sum(order_amount) を選択します。 ベストセラー商品を探す 商品からmax(sell_num)を選択 7月の受注件数と総金額の統計 count(id) を count として選択し、sum(order_amount) を total_amount として選択します。 order_date が 20190701 から 20190731 の間であり、is_pay = 1 である注文から この時点で、注文テーブルの総数は1億個になります。この SQL ステートメントの実行速度が非常に遅いのですが、どのようにトラブルシューティングして最適化すればよいでしょうか? 学生の中には、「行数が多いので、日付フィールドにインデックスを追加すれば、スクリーニングが非常に速くなります」と言う人もいるかもしれません。 合計は1億件です。7月に1000万件の注文があると仮定すると、インデックスを追加した後は、スクリーニング速度が当然大幅に向上します。しかし、この時点で私たちの問題は本当に解決したのでしょうか? この種の集計関数では、各データを走査して結果を計算する必要があります。たとえば、注文の合計数をカウントする場合は、各行の注文金額を読み取って合計する必要があります。 つまり、この統計 SQL では、まず 1 億個のデータから 1,000 万個のデータをフィルタリングし、次にこれらのデータを走査して計算する必要があります。 現時点では非常に遅くなります。
集計統計ソリューションの最適化事前に予算を立てる 20190801 に販売された注文数、金額、その他のデータなど、日付ごとに区切られた統計データ テーブルを作成します。
8 月のデータをカウントする必要がある場合、今月の約 30 行のデータを走査して計算するだけで済みます。 定刻着陸 easyswoole、スケジュールされたタスクなどを使用できます。一定時間(例えば20分ごと)に合計を計算し、統計データテーブルに更新します。 メリット: 処理が少なく、返金操作などの API を変更する必要がありません。元の注文テーブルのデータに依存し、統計データを定期的にカウントして更新するだけで済みます。
要約するインデックスは、データの統計的集計のためのSQL文が遅いという問題を解決できない 集計関数は、将来のデータ量を計算するためにスキャンする必要があるデータ行数を見積もることができないため、注意して使用するか、まったく使用しないでください。 最適化計画は統計表と切り離せないものであり、一定期間内に計算された統計データを保存する必要があります。 これで、MySQL 集計統計データのクエリが遅いという記事は終わりです。MySQL 集計統計データのクエリが遅いという記事の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ウェブページ作成時のHTMLタグの使用に注意してください
>>: Docker でコンテナのポート マッピングを動的に変更する方法
Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...
1. ファイアウォールの状態を確認するファイアウォールのステータスを確認する systemctl s...
最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...
DNMP の紹介DNMP (Docker + Nginx + MySQL + PHP7/5 + Re...
目次ミックスインの実装フック関数のマージプロジェクト実践伸ばす要約するVue は mixins AP...
目次 はじめに 同期 非同期とブロッキング JavaScript のノンブロッキング コールバック ...
ラジオ ボタンや複数選択ボタンにスタイルを追加する方法や、ボタンを大きくする方法を尋ねる人を以前見か...
目次1. Vueのインストール方法1: CDNの導入方法2: 直接ダウンロードしてインポートする方法...
以前、Docker コンテナとローカル マシン間のファイル転送に関する記事を書きました。しかし、この...
目次1. 二重連結リストとは何か2. 双方向リンクリストのカプセル化3. 双方向リンクリストの一般的...
1. MySQLが正常に起動しない場合は、エラーログ/var/log/mysql/error.log...
MyISAM ストレージエンジンMyISAM ストレージ エンジンは、書き込みよりも読み取りが多く、...
この記事では、MySQL 8.0.15 winx64解凍版のインストールと設定方法を紹介します。具体...
1. DockerはローカルディレクトリをマウントしますDocker は、ホスト上のディレクトリをイ...
目次Vue ファースト スクリーン パフォーマンス最適化コンポーネント説明するインターセクションオブ...