gpt4 book ai didi

mysql - 在一列、两列或两者上建立索引?

转载 作者:行者123 更新时间:2023-11-29 03:05:47 27 4
gpt4 key购买 nike

假设我有一个简单的表 user_id(INT)、date(DATE) 和 earnings(FLOAT)。我正在尝试决定如何索引该表。

目前,我将 PRIMARY 键设置为 user_id,date

但并非所有查询都使用此键。我在下面粘贴了一些示例查询。所有这些都经常运行。

SELECT SUM(earnings) FROM stats WHERE user_id=? //Get total earnings
SELECT SUM(earnings) FROM stats WHERE user_id=? AND date between ? AND ? //Get earnings for date range

SELECT user_id FROM stats WHERE date=$today ORDER BY earnings DESC LIMIT 0,5 //Get todays highest earners
SELECT user_id FROM stats WHERE date>$month ORDER BY earnings DESC LIMIT 0,5 //Get months highest earners

如您所见,前两个查询很好地使用了索引,但后两个查询没有。

我想在 date,earnings 上创建一个索引,但感觉很奇怪,因为 date 已经在索引中了。这是正确的解决方案吗?

如果没有,索引该表的最佳方法是什么?

最佳答案

I was thinking of creating an index on date,earnings but feel weird about it since date is already in an index.

根据需要将同一列包含在多个索引中是可以的。在 date,earnings 上创建索引绝对没问题,但在 date 上创建一个索引可能也足够了。您还可以考虑分别为 dateuser_id 编制索引,并查看第二个查询是否在大致相同的时间执行(应该)。

关于mysql - 在一列、两列或两者上建立索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15593794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com