mysql - 具有 250 列的 MySQL 表会导致性能问题吗?

标签 mysql performance

我有一个通常包含 220 多个表格的应用程序,这在获取报告数据时会产生问题。 用户需要加入这么多表才能获取数据。 我决定创建一个新的水平数据库,其中实体的所有必需数据都将在单行中。 这导致单个表中超过 250 列。 我的问题是,用户通常会在单个报告中为表格选择 5 列或 10 列中的任意列。 这种表会产生性能问题吗?

最佳答案

一百万,甚至十亿,对于数据库来说不是问题。

单个查询涉及 220 个表是一个问题。

单个表中有 250 列是个问题。

妥协。将列组移动到单独的表中。分组基于一起提取的列、通常为 NULL 的列或其他逻辑条件。

您可以通过创建 VIEWs 为查询将表格拼接在一起,从而对用户“隐藏”结构。但是,请注意,拥有一个包含 250 列的 VIEW 可能会重现您已消除的问题。

如果您想进一步讨论这个问题,请提供SHOW CREATE TABLE,以便我们讨论具体的列和数据类型。

哦,有一些方法(SETINT)可以组合大量 bool 标志(如果这是导致这么多列的原因)。

需要更多信息

请使用具体的列名称并描述应用...

一些应用程序需要大量的随机信息,表格变成了稀疏矩阵。示例:待售产品的描述。解决方案:将随机信息放入 JSON 字符串中。

一些模式由于试图跨列放置数组而设计错误。示例:Phones -- work + cell + home + fax + etc. 解决方法:将它们放在单独的表中;即使用多行,而不是多列。

有些列不需要分开。示例:地址第 1 行 + 第 2 行 + 公寓号 + 城市 + 省份 + 地区 + 国家 + 邮政编码 + 大洲。解决方案:为邮寄地址设置一个文本列。

当有许多可能的方向时,很难回答你模糊的问题。

关于mysql - 具有 250 列的 MySQL 表会导致性能问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57651796/

相关文章:

mysql - SQL查询以计算按ID分组的行,但限制每个组的计数

mysql - 在 Ruby 的另一个循环中迭代 MySql 查询结果

performance - 具有自定义字段的实体数据库性能设计

python - 在Python中从二维数组中选择列的最快方法?

sql - 锁定数据库

php - NOW() for DATETIME InnoDB Transaction guaranteed?

php - 在 reddit 风格的投票系统中传递正确的 ID 和更新分数时遇到问题

php - mysql_real_escape_string 不适用于后 PHP

c++ - 嵌入式Linux应用程序中的周期 "lags"

甲骨文12c : Wasted Disk Space and Performance