我不明白为什么这个查询很慢。它运行 3-4 秒。当我删除表上的联接时,wa_file_storage
整个查询运行时间不到 0.02 秒。explain
没有表现出任何特别的东西,至少对我来说没有。我很可能缺乏知识,无法从解释中显示的数据得出正确的结论。我猜这与那里使用的两个索引和密钥长度有关?
我发现这两个条件的结合导致速度变慢:
ON (
`CompanyLogo`.`model` = 'CompanyLogo'
AND
`Companies`.`id` = (`CompanyLogo`.`foreign_key`)
)
Run Code Online (Sandbox Code Playgroud)
当我从中删除 CompanyLogo 或 Companies 条件时,查询再次快速运行。
为什么这个连接 ON 会导致查询性能变得如此糟糕,我该如何修复这种情况?
输出explain
:
explain
仅包含字段的输出foreign_key
(运行23 秒!):
explain
仅包含字段的输出model
(运行 0.015 秒):
查询:
SELECT `Jobs`.`id` AS `Jobs__id`,
`Jobs`.`company_id` AS `Jobs__company_id`,
`Jobs`.`job_category_id` AS `Jobs__job_category_id`,
`Jobs`.`branch_id` AS `Jobs__branch_id`,
`Jobs`.`title` AS `Jobs__title`,
`Jobs`.`reference_number` AS `Jobs__reference_number`,
`Jobs`.`location_same_as_office_address` AS `Jobs__location_same_as_office_address`,
`Jobs`.`country_id` AS `Jobs__country_id`,
`Jobs`.`city` AS `Jobs__city`,
`Jobs`.`type_id` AS `Jobs__type_id`,
`Jobs`.`description` AS `Jobs__description`,
`Jobs`.`contact_first_name` …
Run Code Online (Sandbox Code Playgroud)