我正在使用mysql(innoDB)。我有一个包含这些列的大型用户表: USER_ID,last_action_time。 user_id是唯一的主键。该表有大约5百万行。
+------------------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-----------+------+-----+---------+-------+
| user_id | int(11) | NO | | NULL | |
| last_action_time | timestamp | YES | | NULL | |
+------------------+-----------+------+-----+---------+-------+
每当用户在网站上执行操作时,我都会更新last_action_time列中的时间戳。 对于后台系统,我需要显示在网站上进行操作的最后30位用户。 像这样:
SELECT user_id,last_action_time FROM user_table ORDER BY last_action_time DESC LIMIT 30
这需要很多时间。我考虑过对last_action_time进行索引,但我担心我会遇到问题,因为last_action_time列非常频繁地进行更新。我怎么能有一个具有索引但又经常更新的列
答案 0 :(得分:2)
如果您需要搜索last_action_time
列,则需要有索引。确实,更新索引会稍微减慢每个更新查询的速度。
如果您不愿意创建索引,或者只是将查询的频率与效率进行比较。
现在决定: