获得最新评论的最佳查询是什么?

我有一个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

但是在40万行的表上,它需要1,28秒。

有更快查询的想法吗?谢谢!

dongyafei123 回答:获得最新评论的最佳查询是什么?

如果我理解正确,则您要编写如下查询:

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)上建立索引。

,

为了检查现有索引的行为,您可以运行https://docs.gradle.org/6.0/release-notes.html查询:

list

它将告诉您使用了哪些索引,如何使用它们,以及需要索引的WHERE条件,ORDER排序,JOIN条件(以及其他条件)。因此,您可以尝试添加一个新的文件来填充所有文件。

  • 但是警告:每个新索引都会减慢编写速度,因此最好直接瞄准。
  • 但是一个索引可以用于各种查询:例如,在3个字段的索引中,它将用于需要在字段(1),(1、2)或(1、2、3)上建立索引的查询,但是不是(2),(3),(1、3)或(2、3)。

要对应用程序或网站进行更广泛的索引检查,可以启用EXPLAIN配置标志(不适用于生产环境)。

本文链接:https://www.f2er.com/2989820.html

大家都在问