【发布时间】:2014-11-19 18:41:33
【问题描述】:
以论坛帖子为例:
CREATE TABLE Post (
threadId INT,
order INT,
message VARCHAR(255),
PRIMARY KEY (threadId, order)
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
InnoDB 按主键对行进行物理排序。在这种情况下,可以通过questionId 查找问题的答案,并且它们在磁盘上的顺序相同,因此需要更少的磁盘查找。
使用这种方法进行快速读取访问有什么明显的缺点吗?
我主要关心数据库大小和读取吞吐量,而不太关心写入吞吐量。表大小预计最大为 150GB。我的桌子上没有其他索引。记录是批量插入的,通常通过主键。我的查询都是按主键查找记录。
【问题讨论】:
-
“InnoDB 按主键对行进行物理排序”:我对此表示怀疑。删除和插入后太难了。但如果您不指定另一个行,它本质上应该按该顺序返回行。