最近看高性能MySQl,里面是推荐把联合查询分解为多个简单的查询,既然是这样 那么还要联合查询干嘛?究竟是如何选择才是效率更高的选择呢?
クエリがより複雑で、グループ化や並べ替えなどが含まれる場合、ここで説明するのは、より複雑な結合クエリである必要があります。 . 実行時にインデックスを効果的に使用することはできません。一時テーブルを作成することも可能です。そうなると効率は相対的に悪くなります。また、クエリ キャッシュは役に立ちません。分解後、単純なクエリごとに、データベースにはクエリ キャッシュ メカニズムが組み込まれ、より効率的になります。 Explain を使用して結合クエリー・ステートメントを分析してみてください。何が問題ですか?的を絞った修正を行います。分解するときは、やはり分解しなければなりません。
リーリー リーリー
上記は単純なケースです。実際、結合クエリを複数の単純なクエリに分解するという意味がよくわかりません。上記は私の個人的な最適化 (分解) 計画の一部に過ぎません。必ずしもそうとは限りません。このように使用されます)。
あなたが話している分解が結合テーブルを多くのステートメントに分割し、コード内でそれらを順番に呼び出すことである場合、効率はデータベースへの各接続の IO オーバーヘッドよりもさらに低いと思います。 1つのジョイントテーブルよりもはるかに高いです
結合テーブル クエリの効率の最適化を一言で表すと、関連付けに使用する正しいデータの量を最小限に抑えることを意味します
テーブルを関連付ける前に、明らかに間違っていることがわかっているデータが多数ある場合の関連付けを避けるために、事前に正しいデータを抽出する必要があります。
どのような結合方法が使用されても、この方法は適用できます。
効率を改善するソリューションは他にもたくさんありますたとえば、where 順序、フィールド型、インデックスなどです。範囲は膨大です。
インデックスをうまく使えば、結合クエリは問題ありません
クエリがより複雑で、グループ化や並べ替えなどが含まれる場合、ここで説明するのは、より複雑な結合クエリである必要があります。 . 実行時にインデックスを効果的に使用することはできません。一時テーブルを作成することも可能です。そうなると効率は相対的に悪くなります。また、クエリ キャッシュは役に立ちません。分解後、単純なクエリごとに、データベースにはクエリ キャッシュ メカニズムが組み込まれ、より効率的になります。 Explain を使用して結合クエリー・ステートメントを分析してみてください。何が問題ですか?的を絞った修正を行います。分解するときは、やはり分解しなければなりません。
リーリー リーリー
上記は単純なケースです。実際、結合クエリを複数の単純なクエリに分解するという意味がよくわかりません。上記は私の個人的な最適化 (分解) 計画の一部に過ぎません。必ずしもそうとは限りません。このように使用されます)。
あなたが話している分解が結合テーブルを多くのステートメントに分割し、コード内でそれらを順番に呼び出すことである場合、効率はデータベースへの各接続の IO オーバーヘッドよりもさらに低いと思います。 1つのジョイントテーブルよりもはるかに高いです
。結合テーブル クエリの効率の最適化を一言で表すと、関連付けに使用する正しいデータの量を最小限に抑えることを意味します
テーブルを関連付ける前に、明らかに間違っていることがわかっているデータが多数ある場合の関連付けを避けるために、事前に正しいデータを抽出する必要があります。
どのような結合方法が使用されても、この方法は適用できます。
効率を改善するソリューションは他にもたくさんあります
たとえば、where 順序、フィールド型、インデックスなどです。範囲は膨大です。
インデックスをうまく使えば、結合クエリは問題ありません