【发布时间】:2015-08-23 12:29:17
【问题描述】:
我有 5 张桌子:
Categories_groups_cat1
id|order|title(text)
Categories_vs_groups
id|categories_groups_cat1_id|categories_id
类别
id|title(text)
优惠
id|category (text)
优惠券
id|category (text)
我只想在以下情况下显示 Categories_groups_cat1 中的标题:
通过 categories_groups_cat1_id 列在 Categories_vs_groups 中至少存在一行 (Categories_vs_groups.categories_groups_cat1_id==Categories_groups_cat1.id) AND Categories_vs_groups 中的 categories_id 作为表类别 (Categories.id==Categories_vs_groups.categories_id) 的至少一行存在 AND 其中在表 Offers 或 Coupons via 中至少有一行类别栏(offers.category==categories.title)!!
我执行以下操作,但我有超时,因为表优惠或优惠券超过 500000。
SELECT
offers.category_gr,
categories.id, categories.title_gr,
categories_vs_groups.categories_id,
categories_vs_groups.categories_groups_cat1_id AS cat1,
categories_vs_groups.categories_groups_cat2_id AS cat2
FROM offers
LEFT JOIN categories
ON categories.title_gr=offers.category_gr
LEFT JOIN categories_vs_groups
ON categories_vs_groups.categories_id=categories.id
WHERE categories.title_gr='$row_best_offer[category_gr]'
GROUP BY categories.id
order by categories.id
【问题讨论】:
-
托管环境在 60 秒后超时?
show variables where variable_name in ('wait_timeout','interactive_timeout') -
不!但即使它是一个网站。我需要在 2-3 秒内加载!
-
show create table offers等所有 3 个表...然后我们可以考虑您的索引策略 -
您的
where子句正在撤消您的第一个left join。你不妨在select中使用categories.title_gr而不是offers.category_gr。