単一テーブルのクエリや複数のテーブルは、効率より高速な接続を問い合わせます

A.最初の答えは、「高性能のMySQL」の答えから来ています

クエリに関連する多くの高性能アプリケーションが分解されます。単純な、単一テーブルのクエリは、テーブルごとに一度実行されてもよいし、アプリケーションに結果を関連付けます。たとえば、次のクエリ:

タグから選択*

tag_post.tag_id = tag.idにtag_post参加

tag_post.post_id = post.id上のポストに参加

どこtag.tag = 'mysqlの';

これらのクエリは、代わりに次のように分解することができます。

タグから選択*場所=「mysqlの」タグ。

tag_postから選択*どこTAG_ID = 1234;

どこID(123,456,567,9989,8909)でのポストから*選択します。

最後に、なぜそれを行いますか?

一見すると、これは何か良いをしない、私は、クエリを持っていた、ここでは複数のクエリになって、結果はまったく同じである返します。

実際には、クエリー再構築クエリに関連付けられた分解により、以下の利点:(高い並行性、高性能アプリケーションを有し、一般的に単一テーブルのクエリを使用することが推奨されます)

1.より効率的にキャッシュしてみましょう。

多くのアプリケーションでは、簡単に結果オブジェクトを、対応する単一テーブルのクエリをキャッシュすることができます。協会は、テーブルを変更した場合、テーブルはほとんど変化しない場合は、分割した後、その後、テーブルに基づいてクエリを繰り返すことができる一方で、MySQLのクエリキャッシュに加えて、あなたは、クエリキャッシュを使用することはできませんクエリキャッシュの結果を使用しています。

クエリ分解した後2、単一のクエリを実行するには、ロックの競合を減らすことができます。

3.相関的アプリケーション層、データベースがより簡単に、パフォーマンスとスケーラビリティを行うには、より簡単に解決することができます。

4.クエリ自体の効率も向上させることができます。

クエリは、冗長なレコードを減らすことができます。

6.さらに、これを行うことによって、かなりのMySQL、特定のシーンに関連付けられている多くのより効率的なハッシュに関連付けられているネストされたループを使用するよりも、アプリケーションに関連するハッシュを達成するために。

7.データサブライブラリサブテーブルの大量の後半の有利な単一テーブルのクエリは、関節問い合わせ場合、次いで、サブライブラリーと、元のSQLを変更する必要があります。

8.私はCTOが技術を共有するために見た最後の時間は、同社は、基礎となる関節の問い合わせへの参加禁止を提供します。大規模なデータとき本当に遅いです。

9.共同問い合わせは本当に速いかもしれないが、通常のMySQLリソース・プログラム・コードよりも強く、より多くのリソース。

II。その他の回答

シナリオ:Webサイトの会社ライブラリセクションがあると、私は市内のすべての企業を検索したいです。

データシート:tbl_company(T1)、tbl_city(T2)。

実施例1:T1テーブル格納さcityidのパフォーマンスは、選択参加* t1の内側からt1.cityid = t2.cityid係るIDにT2に参加します。

実施例2:T1受信テーブル記憶されたユーザがcityName上海、(送信cityNameを考慮せずに)背景を入れて渡さ上海ID、ID =#{cityidを} cityid t2から単離さcityName選択cityNameをクリック;、次に選択* t1からここcityName =#{cityName}。

両者の違い:のみクエリに関連付けられた表中の実施例1、実施例2に2つの単一テーブルのクエリを行いました。 

大量のデータを考慮すると、マルチテーブルクエリに参加することは、クエリの効率に影響を与えますので、単一テーブルのクエリ用に最適化されています。TP:上記のインデックスを使用せずにダウンしています

私は高くなり、効率の種類求めることができますか?

:SQL最適化し、ビジネスにも関係を持っているが、この文は、頻繁に問い合わせをされません、あなたは二回、接続のコストを考慮していないが、これらが考慮されていない場合は、その後、2より少ない感じ、インデックスが作成されていない場合をもたらしましたこれは、1よりも少し良いはずです。

データは、特に大規模なケースではないか、速い見てカスケード接続しました。

従来のデータベース用のデータベースクエリの数を減らすために可能な限り、関与しています。

しかし、1 mysqlはクエリへの接続/切断、小型でシンプルな応答を処理する必要が非常に高速であり、小さなクエリの数は、それがより速くなるかもしれないので、MySQLへ2.今、ネットワークが非常に速くなっています。

最後に、偉大な神誰よりよい結論はありません。ああ、実際には、一冊の本が、センス、テストテストを明確に!ベンチマークを実行してください!自分のデータ環境の場合は両方の方法をテストする。データと話します。

概要:提案はまだ単一テーブルのクエリです!

おすすめ

転載: www.cnblogs.com/fxl-njfu/p/11759973.html