【发布时间】:2018-07-27 06:37:13
【问题描述】:
我必须在一个包含大约 2000 万行的非常大的表上运行 2 个简单查询。
表格列是id|user_id|earned_amount|created_at
查询一:
select user_id, sum(earned_amount) as total_earning
from earning_history
where user_id=XX;
查询2:
SELECT date(created_at) date, sum(earned_amount) as earning, count(id) as total_entry
FROM `earning_history`
where user_id=xx
GROUP by date
我必须比第一个查询更多地运行第二个查询。所以我正在考虑索引user_id 和created_at 列;
没有索引,执行第二个查询大约需要 6-7 秒。 我的问题是,
我应该只索引 user_id 列吗?还是应该同时索引
user_id和created_at列?我应该使用像 =>
ALTER TABLE earning_history ADD INDEX (user_id, created_at);这样的多列索引吗?
【问题讨论】:
-
也许你可以运行一些测试,比较没有索引的时间,user_id 上的一个索引,user_id 和 created_ad 上的两个索引,但我不确定索引对于按字段分组是否真的有用:@ 987654321@