【发布时间】:2012-12-05 17:26:59
【问题描述】:
我有一张用户购买的商品表,在该表中有一个类别标识符。所以,我想向用户展示同一张表中的其他商品,他们已经购买过相同的类别。
我正在尝试的查询运行时间超过 22 秒,而主要项目表甚至没有 3000 行......为什么效率如此低下?如果需要,我应该索引哪些列?
这是查询:
select * from items
where category in (
select category from items
where ((user_id = '63') AND (category <> '0'))
group by category
)
order by dateadded desc limit 20
【问题讨论】:
-
是的,您应该索引您将在查询中用作标识符的所有列。在此示例中,您要索引
category和dateadded,如果还没有 PK/索引:user_id。 -
@BenAshton 谢谢,会尝试的 - 正如你所指出的,已经在 user_id 上进行了 PK