在mysql中的表内存储200个字段的最佳有效方式

时间:2019-05-06 16:31:19

标签: mysql

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

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

2 个答案:

答案 0 :(得分:1)

您应该记住,对于一个需要200个字段的数据库,优化不仅包括SQL引擎的速度,还包括用户访问所需信息的速度以及开发人员进行查询的速度。数据库内容易于理解,尤其是在需要扩展功能的情况下。

https://www.essentialsql.com/get-ready-to-learn-sql-database-normalization-explained-in-simple-english/上可以找到很好的数据库规范化指南,但又不会混淆术语,但是您已经开始构建数据库,迈出了第一步。

查看数据库按原样运行的速度。性能优化可能来自存储过程或固定长度字段以及其他编程技巧,而不是来自底层的SQL引擎。这样的文章可以帮助您:https://jaxenter.com/6-ways-optimize-sql-database-136448.html

最终记住,一旦建立了数据库,就可以扩展性能,无论是缓存和优化查询/可能的查询等,还是仅使用分布式数据库体系结构即可;请参阅https://blog.sqlauthority.com/2014/10/06/mysql-how-to-create-a-distributed-relational-sql-database/,以获取有用的指南。

正如您在问题中提到的那样,了解客户的可能使用模式对于您做出的选择很重要,但是显而易见的基础知识是一个很好的起点-为用户提供单独的表格(登录,帐户信息,密码哈希,等)和管理功能(统计信息,性能指标,未回答的查询等),然后使用主要数据表是一个好的开始。

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

可以在这里找到另一个有用的资源:https://www.sqlshack.com/sql-server-table-structure-overview/ 我希望这有帮助。

答案 1 :(得分:1)

我从未见过一个表,该表必须包含200列。尤其是对于不超过一百万的行,仅由于大小而导致卡住。一个插入/更新/删除将有巨大的开销。

即使没有可归一化的东西(我假设您已有,否则请进行研究!),您也可以建立一对一关系。例如:

代替在桌子上使用:
mainTable: id, name, something, else, another, 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

main_id是它们之间的链接。现在插入速度更快!