0

多くのテーブル (9 ~ 10 程度) を結合できるようにしたいのですが、7 つだけでもタイムアウトします。私の知る限りインデックスを作成してみました (添付の EXPLAIN を参照)。7つ以上のテーブルを処理するために結合が行われていないだけですか、それとも何か間違っていますか?

(EXPLAIN でわかるように、データベースには非常に少ないレコードしかありません。これを機能させることができたとしても、500,000 以上のレコードがあるとどうなるでしょうか?

SELECT `Node`.`id`, `Node`.`name`, `Node`.`slug`, `Node`.`node_type_id`, `Node`.`site_id`, `Node`.`created`, `Node`.`modified`
FROM `mysite`.`nodes` AS `Node`
LEFT JOIN `mysite`.`data_date_times` AS `DataDateTime` ON (`DataDateTime`.`node_id` = `Node`.`id`)
LEFT JOIN `mysite`.`data_locations` AS `DataLocation` ON (`DataLocation`.`node_id` = `Node`.`id`)
LEFT JOIN `mysite`.`data_media` AS `DataMedia` ON (`DataMedia`.`node_id` = `Node`.`id`)
LEFT JOIN `mysite`.`data_metas` AS `DataMeta` ON (`DataMeta`.`node_id` = `Node`.`id`)
LEFT JOIN `mysite`.`data_profiles` AS `DataProfile` ON (`DataProfile`.`node_id` = `Node`.`id`)
LEFT JOIN `mysite`.`data_products` AS `DataProduct` ON (`DataProduct`.`node_id` = `Node`.`id`)
LEFT JOIN `mysite`.`data_texts` AS `DataText` ON (`DataText`.`node_id` = `Node`.`id`)
WHERE 1=1
GROUP BY `Node`.`id`

私のEXPLAIN出力

結合されたテーブルで主な結果を並べ替え、各含まれる特定のフィールドに対してクエリを実行できるようにしたいので、JOINS を使用しています (潜在的に) - そして、それを行う良い方法がわかりません個別のクエリ。

どんな考え/提案も大歓迎です。

アップデート:

データベースのローカル コピーで実行すると、「一時テーブルへのコピー」に 117 秒かかったと表示され、その後完了し、7 つのレコードすべてが表示されます。

4

0 に答える 0