在mysql中在一个表中存储200个字段的最佳高效方法

在mysql中在一个表中存储200个字段的最佳高效方法,mysql,Mysql,我正在从事一个新项目,其中要求在一个表中存储大约200个字段,这可能是最有效和最好的方法。该表将包含大约1000000行,并且将继续增加 我创建了两个表,并根据更新和选择的频率划分了字段。您应该记住,对于需要200个字段的数据库,优化不仅包括SQL引擎的速度,还包括用户访问所需信息的速度,以及开发人员使数据库内容易于理解的速度,特别是当他们需要扩展功能时 您可以在上找到一本关于数据库规范化的好指南,其中没有混淆术语,但您已经迈出了第一步,开始构建数据库 查看数据库按原样执行的速度。性能优化可能来

我正在从事一个新项目,其中要求在一个表中存储大约200个字段,这可能是最有效和最好的方法。该表将包含大约1000000行,并且将继续增加


我创建了两个表,并根据更新和选择的频率划分了字段。

您应该记住,对于需要200个字段的数据库,优化不仅包括SQL引擎的速度,还包括用户访问所需信息的速度,以及开发人员使数据库内容易于理解的速度,特别是当他们需要扩展功能时

您可以在上找到一本关于数据库规范化的好指南,其中没有混淆术语,但您已经迈出了第一步,开始构建数据库

查看数据库按原样执行的速度。性能优化可能来自存储过程或固定长度字段和其他编程技巧,而不是来自底层SQL引擎。这样的文章可以帮助:

最终要记住,一旦构建了数据库,您就可以在性能方面进行扩展,无论这意味着缓存和优化查询/可能的查询等,还是简单地使用分布式数据库体系结构;有关有用的指南,请参阅

正如您在问题中提到的,了解客户可能的使用模式对于您做出的选择非常重要,但显而易见的基础是一个很好的起点-分别列出用户登录、帐户信息、密码哈希等以及管理功能统计、性能指标、,未回答的查询等,然后是主数据表是一个良好的开端

划分数据表的最简单方法是将相关信息分组到单个表中,以便单个查询(即最简单的查询)可能需要的所有信息都位于同一个表中。 更复杂的查询将必须访问多个表,这些查询是诸如此类的主要候选查询,但以这种方式组织表将使以后或当您进一步了解数据库的实际使用时,细化和优化数据库结构变得更加容易。 当然,数据库的使用还包括输入数据——并非所有的表都包含数百万个条目

另一个有用的资源可以在这里找到:
我希望这有帮助

您应该记住,对于需要200个字段的数据库,优化不仅包括SQL引擎的速度,还包括用户访问所需信息的速度,以及开发人员使数据库内容易于理解的速度,尤其是当他们需要扩展功能时

您可以在上找到一本关于数据库规范化的好指南,其中没有混淆术语,但您已经迈出了第一步,开始构建数据库

查看数据库按原样执行的速度。性能优化可能来自存储过程或固定长度字段和其他编程技巧,而不是来自底层SQL引擎。这样的文章可以帮助:

最终要记住,一旦构建了数据库,您就可以在性能方面进行扩展,无论这意味着缓存和优化查询/可能的查询等,还是简单地使用分布式数据库体系结构;有关有用的指南,请参阅

正如您在问题中提到的,了解客户可能的使用模式对于您做出的选择非常重要,但显而易见的基础是一个很好的起点-分别列出用户登录、帐户信息、密码哈希等以及管理功能统计、性能指标、,未回答的查询等,然后是主数据表是一个良好的开端

划分数据表的最简单方法是将相关信息分组到单个表中,以便单个查询(即最简单的查询)可能需要的所有信息都位于同一个表中。 更复杂的查询将必须访问多个表,这些查询是诸如此类的主要候选查询,但以这种方式组织表将使以后或当您进一步了解数据库的实际使用时,细化和优化数据库结构变得更加容易。 当然,数据库的使用还包括输入数据——并非所有的表都包含数百万个条目

另一个有用的资源可以在这里找到:
我希望这有帮助

我从未见过一个只需包含200列的表。特别是对于一百万行以上的行,这将因大小而阻塞。一次插入/更新/删除将产生巨大的开销

即使 没有什么可以正常化的,我想你已经正常化了,否则就研究一下吧!,您还可以建立1对1关系。例如:

而不是放在桌子上: mainTable:id,name,something,other,other,column,just,as,demo

您还可以将其分解为许多小表格:

mainTable:        id, something, else
descriptionStuff: id, main_id, name
relatedToX:       id, main_id, another, column
relatedToY:       id, main_id, just, as, demo

主id是它们之间的链接。插入现在快多了

我从未见过一个只需包含200列的表。特别是对于一百万行以上的行,这将因大小而阻塞。一次插入/更新/删除将产生巨大的开销

即使没有什么可以正常化的,我也假设你有,否则就研究一下吧!,您还可以建立1对1关系。例如:

而不是放在桌子上: mainTable:id,name,something,other,other,column,just,as,demo

您还可以将其分解为许多小表格:

mainTable:        id, something, else
descriptionStuff: id, main_id, name
relatedToX:       id, main_id, another, column
relatedToY:       id, main_id, just, as, demo

主id是它们之间的链接。插入现在快多了

我想你的意思是想在数据库中存储200个字段?你听说过标准化吗?最好的可能很大程度上取决于你对这些数据的查询。除非您完整地描述项目,否则无法给出优化建议。@BillKarwin该项目是一个Lead管理系统,要求针对每个Lead捕获字段,每个Lead可能包含大约200个要捕获并保存在表中的字段。然后需要检索相同的字段以显示数据。目前大约有100万行,这将继续增加。您需要将数据分成更小的表。一个好的开始是将消费者数据、潜在客户兴趣、您关于潜在客户本身的数据、您何时收到的数据、潜在客户的去向、潜在客户的来源等拆分为单独的表。任何引线都有的数据,而其他的数据不应该,你应该考虑把它放在不同的表中。在不了解当前模式的情况下,很难直接回答这个问题。关于数据规范化,这里有一个不错的资源:表字段计数并不是真正的需求;它们是实现细节。我想你的意思是你想在一个数据库中存储200个字段?你听说过标准化吗?最好的可能很大程度上取决于你对这些数据的查询。除非您完整地描述项目,否则无法给出优化建议。@BillKarwin该项目是一个Lead管理系统,要求针对每个Lead捕获字段,每个Lead可能包含大约200个要捕获并保存在表中的字段。然后需要检索相同的字段以显示数据。目前大约有100万行,这将继续增加。您需要将数据分成更小的表。一个好的开始是将消费者数据、潜在客户兴趣、您关于潜在客户本身的数据、您何时收到的数据、潜在客户的去向、潜在客户的来源等拆分为单独的表。任何引线都有的数据,而其他的数据不应该,你应该考虑把它放在不同的表中。在不了解当前模式的情况下,很难直接回答这个问题。关于数据规范化,这里有一个不错的资源:表字段计数并不是真正的需求;它们是实现细节。我同意这一点——总是假设没有任何东西可以正常化。我只想提一个替代方案:跳过main_id,只使用id而不是auto increment,maintable除外,这将更好地用于以后的选择查询,特别是当所有id都声明为maintable.id的主键和外键时。我同意这一点——始终假设没有任何规范化。我只想提到另一种选择:跳过main_id,只使用id而不是auto increment,maintable除外,这将更好地用于以后的select查询,尤其是当所有id都声明为maintable.id的主键和外键时。