我有以下SQL查询,它似乎运行正常,但我担心随着我的网站增长它可能无法按预期执行,我想要一些反馈,这个查询真正有效和高效:
select * from articles where category_id=XX AND city_id=XXX GROUP BY user_id ORDER BY created_date DESC LIMIT 10;
基本上我想要实现的目标是将created_date的最新文章限制为10,只有符合以下条件才能选择文章:
答案 0 :(得分:0)
一些潜在的改进(为了获得最佳查询性能):
答案 1 :(得分:0)
你有一个GROUP BY
子句只包含一列,但是你要拉出所有列,而不是聚合它们。您是否意识到为GROUP BY
中未指定且未汇总are not guaranteed的列返回的值?
您还在ORDER BY
子句中引用了这样一个列。由于无法保证该列的值,因此即使没有对基础表进行更改,也无法保证随后对此脚本的调用将返回哪些行。
所以,我至少会将ORDER BY
子句更改为:
ORDER BY MAX(created_date)
或者这个:
ORDER BY MIN(created_date)