我有一个通常包含 220 多个表格的应用程序,这在获取报告数据时会产生问题。 用户需要加入这么多表才能获取数据。 我决定创建一个新的水平数据库,其中实体的所有必需数据都将在单行中。 这导致单个表中超过 250 列。 我的问题是,用户通常会在单个报告中为表格选择 5 列或 10 列中的任意列。 这种表会产生性能问题吗?
最佳答案
一百万,甚至十亿,行对于数据库来说不是问题。
单个查询涉及 220 个表是一个问题。
单个表中有 250 列是个问题。
妥协。将列组移动到单独的表中。分组基于一起提取的列、通常为 NULL
的列或其他逻辑条件。
您可以通过创建 VIEWs
为查询将表格拼接在一起,从而对用户“隐藏”结构。但是,请注意,拥有一个包含 250 列的 VIEW
可能会重现您已消除的问题。
如果您想进一步讨论这个问题,请提供SHOW CREATE TABLE
,以便我们讨论具体的列和数据类型。
哦,有一些方法(SET
或 INT
)可以组合大量 bool 标志(如果这是导致这么多列的原因)。
需要更多信息
请使用具体的列名称并描述应用...
一些应用程序需要大量的随机信息,表格变成了稀疏矩阵。示例:待售产品的描述。解决方案:将随机信息放入 JSON 字符串中。
一些模式由于试图跨列放置数组而设计错误。示例:Phones -- work + cell + home + fax + etc. 解决方法:将它们放在单独的表中;即使用多行,而不是多列。
有些列不需要分开。示例:地址第 1 行 + 第 2 行 + 公寓号 + 城市 + 省份 + 地区 + 国家 + 邮政编码 + 大洲。解决方案:为邮寄地址设置一个文本列。
当有许多可能的方向时,很难回答你模糊的问题。
关于mysql - 具有 250 列的 MySQL 表会导致性能问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57651796/