mysql - 在数据库中存储 100K 个不同的表

标签 mysql sql-server database database-design architecture

我有大约 100K 组表,它们是 2,3 或 4 列。每个表大约有 5-10 行数据。但是每一列都有自己唯一的列名和数据类型。这是 100K 表列名称中的 6 个示例,大约 10 行。

属性名称 |默认类型 |说明 |引用

类型 |属性(property) |说明 |引用

代码 |说明 |引用

值(value) |引用

类型 |说明 |引用

数量 |说明 |引用

此时所有内容都存储在 100K html 文件中,但我想将它们存储在数据库中。我想知道是否有人对如何使用尽可能少的表存储它们有任何建议。

当时想到的解决方案是:

  1. 创建大约 10 万张表(最后的解决方案)
  2. 有三组表格,4+1col、6+1col 和 8+1col,使用奇数列作为列标题,偶数列作为值。每行都引用了一个外键,该外键指定了此数据的位置。查询它们的 bashed 列名和外键可以检索我的数据。

我想知道是否有人对此有更好的解决方案?

最佳答案

100K 表既是糟糕的设计,也可能是糟糕的性能。由于每个表都是使用 1-3 个文件实现的,因此您依赖于操作系统的文件查找效率。此外,MySQL 表缓存并不是为这样的大量数据而设计的。

另一方面,MySQL 很乐意处理百万行的表。或者少量的大表。

CSV 文件与其他文件的区别是什么?那可能是它进入的表中的另一个“列”吗?然后将具有相同结构(例如,Value + Ref)的所有文件放入一个包含这些列的表中,然后再加一列?

考虑以这种方式进行加载:

  1. 创建表
  2. LOAD DATA 将一个文件放入该表
  3. 在 SQL 中对其进行操作(如有必要)并将其复制到最终表中(INSERT ... SELECT ...)

然后对每个文件重复。

对于 10 万个文件,您可能想要编写一个程序来创建执行 10 万个步骤的代码。

关于mysql - 在数据库中存储 100K 个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257147/

相关文章:

sql-server - 如何在 SSIS 中使用 Lookup 对象保持两个流

java - 与h2数据库的并发

mysql - Moodle 日期用户完成类(class)

mysql - (mySQL 数据库 - 存储不同类型的相同值

php - 可以有效衡量趋势和受欢迎程度的数据库结构?

sql - MSSQL : How do you script Stored Procedure creation with code?

sql-server - 三向参照完整性-SQL Server 2008

php将特定字符更改为html标签

php - 如何使用 PHP 中数据库中的内容将 HTML 文件附加到电子邮件?

mysql - for循环在sql语句中重复20次