我希望能够将很多表连接在一起(9-10 左右),但即使只有 7 个,它也会超时。我尝试尽我所知建立索引(见附件说明)。连接只是不是为了处理 7 个以上的表,还是我做错了什么?
(正如您在解释中看到的那样,数据库中的记录非常少。即使我可以让它工作,当有 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`
我正在使用 JOINS 是因为我希望能够通过它的连接表对主要结果进行排序,并且能够查询每个包含中的特定字段(可能) - 我不知道这样做的好方法单独的查询。
非常欢迎任何想法/建议。
更新:
在数据库的本地副本上运行时,它说“复制到临时表”需要 117 秒,然后完成并显示所有 7 条记录。