ページ分割されたクエリを実行するには: 1. MySQL の場合、サブクエリと結合の使用は推奨されません。結合の効率に欠陥があるためです。データ量が多くなると、効率を保証することが難しくなります。インデックスに基づいて単一のテーブルからデータを取得し、プログラム内でデータを結合してマージすることを強くお勧めします。 1. アプリケーション層アソシエーションの利点キャッシュをより効率的にします。多くのアプリケーションでは、単一テーブル クエリに対応する結果オブジェクトを簡単にキャッシュできます。関連付け内のテーブルが変更されると、クエリ キャッシュは使用できません。分割後、テーブルがほとんど変更されない場合は、テーブルに基づくクエリでクエリ キャッシュの結果を再利用できます。 クエリを個々の部分に分割すると、ロックの競合を減らすことができます。 アプリケーション層で関連付けを行うことで、データベースを分割し、高いパフォーマンスとスケーラビリティを実現しやすくなります。 クエリ自体の効率も向上する可能性があります。 ID セットをクエリする場合、結合クエリの代わりに IN() を使用すると、MySQL は ID の順序でクエリを実行できるため、ランダム結合よりも効率的になる可能性があります。 これにより、冗長なレコードクエリの数を減らすことができます。アプリケーション層で連想クエリを実行すると、アプリケーションは特定のレコードを一度だけクエリすればよいが、データベースで連想クエリを実行すると、 データの一部に繰り返しアクセスすること。この観点から見ると、このような再構築により、ネットワークとメモリの消費も削減される可能性があります。 さらに、これは MySQL のネストされたループ結合を使用するのではなく、アプリケーションでハッシュ結合を実装することと同じです。シナリオによっては、ハッシュ関連付けの方がはるかに効率的です。 2. アプリケーション層アソシエーションの使用シナリオアプリケーションが単一のクエリの結果を便利にキャッシュできる場合 異なるMySQLサーバー間でデータを分散できる場合 IN() を結合クエリの代わりに使用できる場合 同時実行シナリオが多く、DBクエリが頻繁に発生するため、シャーディングが必要です。 3. 参加が推奨されない理由1. DB は大きなビジネス上のプレッシャーにさらされており、その負担をできるだけ軽減したいと考えています。テーブルに 100 万ページ以上ある場合、結合によってパフォーマンスが低下します。 4. 結合なしのソリューションビジネス レイヤーでは、単一のテーブルに対してデータのクエリが実行された後、そのデータが次の単一テーブル クエリの条件として使用されます。つまり、サブクエリです。サブクエリからの結果セットが多すぎるのではないかと心配です。 MySQL では IN の数に制限はありませんが、SQL ステートメント全体のサイズは制限されます。パラメータ max_allowed_packet を調整することで、SQL ステートメントの最大値を変更できます。ビジネスを適切に処理し、単一のクエリの結果セットを許容できる範囲に制限することをお勧めします。 5. 結合クエリの利点関連クエリの利点は、ページ付けが可能で、セカンダリ テーブルのフィールドをクエリ条件として使用できることです。クエリを実行すると、セカンダリ テーブルに一致するフィールドが結果セットとして使用され、プライマリ テーブルがその中で使用されるようになります。しかし、問題は、一致するデータの量が多すぎると機能せず、返されるページング レコードが実際のものと異なることです。解決策としては、フロント エンドに 1 回限りのクエリを渡して、フロント エンドでバッチで表示させることができます。この解決策の前提は、SQL 自体の長さが制限されているため、データの量が大きすぎないことです。 これで、MySQL がサブクエリと結合の使用を推奨しない理由に関するこの記事は終了です。関連する MySQL サブクエリと結合の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次オーディオトランスコーディングツール原理JAVE プロジェクトの問題このプロジェクトの特徴拡張機...
1: インストールコマンドpip install docker-compose例外情報socket....
これは、VPS サーバー用の一般的なワンクリック パフォーマンス テスト スクリプトです。マシンの構...
DockerにNginxをインストールするNginx は、IMAP/POP3/SMTP サービスも提...
接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FOR...
開発から導入まで自分で行うシングルページアプリケーションを開発する場合、ビルドを実行した後 npm ...
この記事では、Vueを使用して天気コンポーネントをロードする方法を参考までに紹介します。具体的な内容...
目次背景メインコンテンツ1. コンポーネントの比較2. 実装のアイデア3. キーメソッドソースコード...
1. 今日、ページを作っているときに、矢印を中央に配置する効果に遭遇しました。クリック領域を大きくし...
2018 年の最新 MySQL 5.7 の詳細なインストールと設定は 4 つのステップに分かれており...
目次1. 機能説明2. 親コンポーネント3. サブコンポーネント NextTick.vue 4なぜ未...
純粋な CSS3 で実装された美しい入力ボックス アニメーション スタイル ライブラリを共有します ...
前回の記事で、MySQL ステートメントの最適化には限界があると述べました。MySQL ステートメン...
1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...
目次序文グローバルロック完全なデータベース論理バックアップFTWRL と set global re...