分区SQL表

时间:2018-04-28 06:44:11

标签: mysql mysqli

我有一张超过200万行的表格。在我的脚本中,我需要在0.0001秒内完成查询。但现在大量的行增加到0.1秒。我的表结构如下:

chat_id | user_id | score

在每个查询中,我只想在聊天中获得用户的分数,并在查询中使用LIMIT 1。对于表开头的用户,查询在0.0001秒内完成,但对于表末尾的用户,有时需要0.5秒才能返回结果。 我正在考虑使用chat_ids将表拆分为多个表。例如:

chat1_table

user_id | score

chat2_table

user_id | score

这导致每个表中的行要少得多(如表中的1k行),查询速度会随着我的需要增加。 但我想知道有没有办法在一张桌子上获得相同的表现? 我听说过分区,但我不太了解它,而且我只有一个磁盘。

1 个答案:

答案 0 :(得分:1)

我认为只需添加一个包含chat_id和user_id列的索引即可。实际上,如果(char_id,user_id)对始终是唯一的,则可以将它们变为复合主键。如果您的桌子还没有主键,您可以添加它:

ALTER TABLE tablename ADD PRIMARY KEY(char_id, user_id);
相关问题