使用临时文件,使用带有 order 和 group by 的文件排序

发布于 2024-11-27 17:43:59 字数 273 浏览 0 评论 0原文

查询

SELECT *
FROM table11
WHERE table1.field1 = 1
GROUP BY table1.field2
ORDER BY table1.field3 DESC

我尝试了所有这些

(field1,field2,field3)
(field1,field3,field2) 

索引,但仍然解释计划显示使用临时和使用文件排序。

有什么解决办法吗?

Query

SELECT *
FROM table11
WHERE table1.field1 = 1
GROUP BY table1.field2
ORDER BY table1.field3 DESC

I tried all these

(field1,field2,field3)
(field1,field3,field2) 

indexes but still explain plan shows using temporary and using filesort.

Any solution ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

那支青花 2024-12-04 17:43:59

您正在尝试按 field3 对数据进行排序,该字段不属于 group by 子句。这意味着field3参与了分组过程,并返回field3的随机值,因此文件排序是不可避免的。

在这种情况下,最好的索引是(field1, field2)

You are trying to sort the data by field3 which is not part of group by clause. This means that field3 participates in the process of grouping which returns random values of field3, so the filesort is inevitable.

In this case the best possible index is (field1, field2).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文