【发布时间】:2016-04-01 19:41:28
【问题描述】:
我正在创建一个将使用 LAMP 堆栈的聊天服务。它将是一个 REST api,它将每条聊天消息存储在其数据库中。
我有一个消息表,其中包含:
id|内容|时间戳
现在,api 可能需要从两个时间戳之间的特定 id 获取消息。
由于时间戳是由 mySQL 自动添加的,因此可以预期时间戳列会被排序(如果我错了,请纠正我)。
我不想在时间戳上创建索引,因为该表上将有相当多的写入操作,而且该表将是一个相当大的表。
我想知道在排序的列中搜索是否比普通搜索更快。
我想防止全表扫描只是为了获取两个时间戳之间的所有消息。
【问题讨论】:
-
"来自两个时间戳之间的特定 id 的消息" -- 复合
INDEX(particular_id, timestamp)将是最佳的,而PARTITIONing将无济于事。 -
正如我所提到的,表格大小可能会变得非常大。此外,写入操作的数量也会很高。索引还有意义吗?
-
索引几乎总是有意义的;分区很少有意义。由于有多少变化,请提供
SHOW CREATE TABLE目前的情况。 (您的描述不包括引擎、索引、PRIMARY KEY、数据类型等;所有 可能值得讨论。)
标签: mysql database optimization database-design indexing