这个查询的MYSQL速度和优化的表结构

时间:2010-12-27 12:58:53

标签: mysql

我需要构建一个新的表系统,它会为每个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 单独查询而言,哪个更好?

2 个答案:

答案 0 :(得分:1)

如果您始终准确存储10 VARCHAR个字段,并且每个VARCHAR都有自己的含义(就像它总是一个名字,或者总是一个地址等),那么只需创建包含10字段的表格。

您的第二个解决方案称为EAV(entity-attribute-value),它主要用于稀疏矩阵(当您有许多可能的属性时,只有少数几个为给定实体设置)。它具有可扩展性和可维护性,但对于像您这样的查询效率较低。

答案 1 :(得分:0)

绝对就速度而言,第一个更好。加入大桌子的速度非常慢