我有简单的表(MYSQL - MyISAM):
编辑:这是一个 50M 的记录表,添加新索引并不是我们能做的。
actions (PRIMARY action_id, user_id, item_id, created_at)
指数:
action_id (action_id, PRIMARY)
user (user_id)
item_user (user_id, item)
created_user (user_id, created_at)
和查询:
SELECT count(distinct item_id) as c_c from actions where user_id = 1
解释:
1 SIMPLE action ref user_id,created_user user_id 4 const 1415
对于具有超过 1k 个条目的用户,此查询大约需要 7 秒的时间运行。有什么办法可以改善这一点?
我尝试了以下方法,但它们都更糟:
SELECT count(*) from actions where user_id =1 group by item_id
SELECT count(item_id) from actions USE INDEX (item_user) where user_id = 1 group by item_Id