我需要构建一个新的表系统,它会为每个id存储一个id和10 varchars(255)
。这就是它需要存储的全部内容。除了仅对整行进行明显的插入/删除/更新外,唯一要运行的其他查询是SELECT * FROM table WHERE id='id'
。 700万条记录。
我想出了2个结构,它们是:
(1) - 单个表,id,然后是10 varchars
,没有连接,没有花哨,id是主键,简单select *
。
(2) - 2个表,首先是id,然后是10个整数元素,第二个是integer(auto increment)
和varchars
。这将使用连接。因此,我猜每个查询有10个连接。
显然,2作为一个正式的结构更好,对于后来的表格结构变化更好,但就 SPEED 单独查询而言,哪个更好?
答案 0 :(得分:1)
如果您始终准确存储10
VARCHAR
个字段,并且每个VARCHAR
都有自己的含义(就像它总是一个名字,或者总是一个地址等),那么只需创建包含10
字段的表格。
您的第二个解决方案称为EAV
(entity-attribute-value),它主要用于稀疏矩阵(当您有许多可能的属性时,只有少数几个为给定实体设置)。它具有可扩展性和可维护性,但对于像您这样的查询效率较低。
答案 1 :(得分:0)
绝对就速度而言,第一个更好。加入大桌子的速度非常慢