私のモデルには2つのテーブルが含まれているとしましょう:人物と住所。 1人はO、1つ以上のアドレスを持つことができます。私はすべての人をリストするクエリを実行しようとしており、それぞれが持っているアドレスの数が含まれています。ここで私はそれを達成するために持っている2つのクエリです:ネストされたオブジェクトをカウントするためにサブクエリを結合する
SELECT
persons.*,
count(addresses.id) AS number_of_addresses
FROM `persons`
LEFT JOIN addresses ON persons.id = addresses.person_id
GROUP BY persons.id
と
SELECT
persons.*,
(SELECT COUNT(*)
FROM addresses
WHERE addresses.person_id = persons.id) AS number_of_addresses
FROM `persons`
は、もう1つは、パフォーマンスの期間に他よりも優れている場合、私は思っていました。
この 'cube_models'テーブルは何ですか、なぜ2番目のクエリにのみ表示されますか? 2番目のクエリでは、相関サブクエリが使用されます。通常、結合を使用する同様のクエリよりも実行速度が遅くなりがちです。 –
私は最初のものがより速くなると信じていますが、それらは非常に似ています。両方の実行計画を実行し、その違いを確認してください。私はそれを行うより良い方法があるとは思わない。 – sagi
私はcube_modelsを修正しました。 – TrexXx