ホームページ  >  記事  >  データベース  >  MySQL のサブクエリから複数の列を効率的に選択するにはどうすればよいですか?

MySQL のサブクエリから複数の列を効率的に選択するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-29 09:11:30503ブラウズ

 How Can I Efficiently Select Multiple Columns from Subqueries in MySQL?

MySQL のサブクエリから複数の列を選択する

各属性の ID と値 (変換) を取得する必要があるシナリオがあります。指定された言語で。ただし、一部の属性には指定された言語での翻訳がない場合があります。

サブクエリのパフォーマンスに関する考慮事項

1 つの方法は、例に示すように、各列にサブクエリを使用することです。 :

select attribute, 
(select id from attributeTranslation where attribute=a.id and language=1),
(select translation from attributeTranslation where attribute=a.id and language=1), 
from attribute a;

このアプローチは機能しますが、サブクエリを MySQL で最適化できない場合、パフォーマンスに関する懸念が生じます。

仮想テーブルの使用

より効率的な解決策は、仮想テーブルを利用することです。サブクエリをかっこで囲むことにより、クエリ内の他のテーブルに結合できる仮想テーブルを作成できます。

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

この例では、仮想テーブル b には、 attributeTranslation テーブル。属性テーブルに結合されます。これにより、複数のサブクエリの必要性がなくなり、パフォーマンスが向上します。

結論

仮想テーブルを使用すると、サブクエリから複数の列を効率的に選択できると同時に、作成する柔軟性も提供されます。複雑な結合操作。このアプローチは、パフォーマンスを考慮する場合に特に有益です。

以上がMySQL のサブクエリから複数の列を効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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