我有一个用户已购买的项目表,其中有一个类别标识符。所以,我想向用户展示来自同一个表的其他商品,其中已经有相同的商品类别。SQL select ... in(select ...)花费很长时间
查询我试图超过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/index:'user_id'。 –
@BenAshton @BenAshton谢谢,将尝试 - 已经PK user_id指出 –