mysql - 获得最后评论文章的最佳查询是什么?
问题描述
我有一张comment
像这样的桌子:
id article_id approved created_at
7 104506 1 2019-12-02 09:36:32
6 104452 0 2019-12-02 09:31:35
5 104498 1 2019-12-02 09:27:56
4 104506 1 2019-12-02 09:05:45
3 104511 1 2019-12-02 08:58:56
2 104501 1 2019-12-02 08:52:57
1 104552 1 2019-12-02 08:50:10
我想要什么:
104506
104498
104511
104501
104552
我想通过 created_at desc 获得一个不同的 article_id 批准订单列表
所以我只是这样做:
SELECT article_id FROM comment WHERE approved = 1 GROUP BY article_id ORDER BY created_at DESC LIMIT 30
但是在 400k 行的表上,它需要 1.28 秒。
任何想法有一个更快的查询?谢谢!
解决方案
如果我理解正确,您想这样编写查询:
SELECT article_id
FROM comment
WHERE approved = 1
GROUP BY article_id
ORDER BY MAX(created_at) DESC
LIMIT 30;
为此,您需要一个关于comment(approved, article_id, created_at)
.
推荐阅读
- ms-access - MS Access 2007:所有查询的属性 CacheSize、Prepare 和 StillExecuting 出现“不支持操作”错误
- asp.net - 为 asp.net 应用程序构建 docker 映像时出现构建错误
- javascript - 有没有办法从 datamodel.prisma 文件生成 schema.graphql 文件?
- reactjs - 处理空图像字段上传到 Cloudinary
- php - 返回 JSON 数组 rom 数据库响应(流明 php)
- c# - 在所有 Windows PC 尺寸上将屏幕设置为格式化
- jquery - 使用 Jquery 将活动类添加到列表内的锚点
- javascript - 尝试在 jQuery 中向图像添加类时遇到问题
- css - 如何在 react-native 应用程序中剪辑边框?
- java - RSA 我应该使用 X.509 还是 PKCS #1