分区sql表

qybjjes1  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(332)

我有一张两百多万行的table。在我的脚本中,我需要在0.0001秒内完成查询。但是现在大量的行数将其增加到了0.1秒。我的表结构如下:

chat_id | user_id | score

在每个查询中,我只想得到一个用户在聊天中的得分,我在查询中使用limit1。对于表开头的用户,查询在0.0001秒内完成,但是对于表末尾的用户,有时需要0.5秒才能返回结果。我正在考虑将表拆分为多个具有聊天室ID的表。例如:
聊天桌

user_id | score

chat2\表

user_id | score

这导致每个表中的行要少得多(比如一个表中有1k行),并且查询速度会根据需要提高。但我在想,难道没有办法在一张table上得到同样的表现吗?我听说过分区,但我对它了解不多,而且我只有一个磁盘。

xwmevbvl

xwmevbvl1#

我认为只要添加一个包含chat\u id和user\u id列的索引就足够了。事实上,如果(char\u id,user\u id)对总是唯一的,您可以将它们生成一个复合主键。如果您的表还没有主键,可以添加它:

ALTER TABLE tablename ADD PRIMARY KEY(char_id, user_id);

相关问题