ホームページ  >  記事  >  バックエンド開発  >  Thinkphp では、mysql の 2 つのテーブル クエリに in ids または left join を使用する必要がありますか (ページングの場合、ids 配列は通常約 20 です)。

Thinkphp では、mysql の 2 つのテーブル クエリに in ids または left join を使用する必要がありますか (ページングの場合、ids 配列は通常約 20 です)。

WBOY
WBOYオリジナル
2016-12-05 13:44:221423ブラウズ

どのソリューションが優れているかわかりません
通常は分割テーブルクエリであり、キャッシュに適していると本で読みました

返信内容:

どのソリューションが優れているかわかりません
通常は分割テーブルクエリであり、キャッシュに適していると本で読みました

主にデータの量とアプリケーションのシナリオに依存します。データの量が少ない場合、この 2 つはほぼ同じです。
where in() クエリと複数テーブルの左結合クエリのどちらがより効率的ですか?

あなたは SQL の問題について話しています。 left join を使用する人の数は in を使用する人の数をはるかに上回っています。

これら 2 つの構文の使用シナリオは異なります。In は ID を認識して ID グループに一致するレコードを除外しますが、左結合は関連テーブルです。ページングを行う場合は、関連付けられたテーブルが大きなテーブル (数十万または数百万のレコード) であるかどうかを確認してから、左結合を使用するかどうかを決定します。結合を使用する場合でも、それを説明して確認するのが最善です。最適な場合はいいえ。最適な場合は、Explain の結果を確認して最適化します。非常に大きなテーブルの場合は結合しないことをお勧めします。in を使用する場合は、ID を抽出してセカンダリ テーブルにクエリを実行してデータをメイン テーブル データ セットに組み立てるときに複数のループが発生しないようにする必要があり、必ずしも効率が遅くなるわけではありません。 。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。