我正在MySQL中创建一个包含120个字段的表。它将包含50个varchar(255)字段,其他字段为char(1)最大字段,1个日期字段和5个双字段,其他字段为int(11)字段。
我的问题是-将来会不会引起任何问题?
发布于 2012-12-15 18:23:59
你得停下来考虑一下桌子的设计。如果您有那么多列,那么您可能需要对表进行一些规范化。
尽管非规范化数据可以帮助您绕过连接查询来检索许多列的数据,但是尝试想象一下在数据检索期间MySQL内部发生了什么。
如果一个120列表经历了SELECT * FROM ... WHERE,您可能会导致以下情况:
这很容易导致通信数据包(按最大值大小)被推到每个查询的边缘。
在我作为开发人员的早期,我曾在1995年的一家公司工作,当时DB2是主要的关系数据库管理系统。该公司有一个表,该表有270列、数十个索引,并存在检索数据的性能问题。他们联系了IBM,并让顾问查看了他们系统的架构,包括这个单块表。该公司被告知“如果你在未来2年内不规范这个表,DB2将在执行Stage2处理的查询(任何需要对非索引列进行排序的查询)上失败。”有人告诉一家价值几万亿美元的公司,要将270列表格正常化.
请看我关于这个话题的其他帖子。
Jul 30, 2011:数据库表MySQL中的20多列Jul 20, 2011:MySQL中列太多https://dba.stackexchange.com/questions/30489
复制相似问题