tablemessage
とtable がありsender
、特定の ID に関連付けられたすべての「メッセージ情報」を、送信者名と電子メールと共に取得したいと考えています。私はこのクエリを持っています:
SELECT
a.id,
a.subject,
a.body,
a.sender_id,
(
SELECT b.name
FROM sender b
WHERE b.id = a.sender_id
LIMIT 1
) AS sender_name,
(
SELECT b.email
FROM sender b
WHERE b.id = a.sender_id
LIMIT 1
) AS sender_email,
a.sent_time
FROM message a
WHERE a.id = <id>
LIMIT 1;
動作しますが、同じ tableに対して 2 つの異なる SELECT サブクエリを実行する必要があります。この場合 (非常に単純化された例です)、おそらくパフォーマンスにまったく影響はありませんが、多くのフィールドを外部テーブルから取得する必要がある実際のシナリオでは、これを行う最善の方法は次のとおりです。 JOINステートメントを使用していますか? 多くのフィールドを取得する SELECT サブクエリを使用することはできませんか?
問題が発生した場合に備えて、 MyISAMストレージ エンジンでMySQLを使用しています。