mysql - 在 MySQL 中,将一张大表拆分为多个表或坚持使用一个表是否更有效?

标签 mysql database-design

我正在编写一个 C# 程序,在其中查看大约 5300 个股票代码。我将数据存储在 MySQL 数据库中,其中包含以下字段:日期、股票名称、成交价格、movingaverage50、movingaverage200,...以及其他一些字段。每只股票最多可以有 15300 个不同的数据点。所以整个数据库将是 5300x15300x6 左右的不同字段。

我的问题是,除了一个大表之外,是否有更有效的方法来存储所有这些数据?将数据分成不同的表格(例如按十年)会给我带来什么吗?是否有一些链接/网站,我应该去那里大致了解我应该考虑哪些考虑因素来设计尽可能快的数据库,或者 MySQL 数据库本身是否使其高效?

我目前正在读取 5500 个 Excel 文件,一次一个地用数据填充我的 C# 对象,这需要大约 15 分钟...我假设一旦我的 MySQL 运行起来,时间就会大大减少。

感谢您的帮助;我想这更像是寻找一个开始思考数据库设计的地方。

最佳答案

评论太长了。

一般来说,存储多个具有相同格式的表是一个坏主意。这成为一个维护问题,并对某些类型的查询产生可怕的后果。因此,首选一张表。

总行数为 486,540,000。这是相当大的,但并不特别。

有关数据布局的问题不仅取决于数据,还取决于数据的使用方式。我的猜测是,使用索引和分区可能会解决您的性能问题。

在 15 分钟内处理 5,500 个 Excel 文件似乎相当不错。数据库是否会明显更快取决于服务器和应用程序之间的数据量。如果您将“Excel”文件作为 CSV 文本文件来读取,那么数据库可能不会有很大的收获。如果您正在通过 Excel 进行阅读,那么可能会更好。

注意:使用数据库,您可以将处理从 C# 移至数据库中。这使得数据库能够利用并行处理,从而为性能改进开辟其他途径。

关于mysql - 在 MySQL 中,将一张大表拆分为多个表或坚持使用一个表是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32157541/

相关文章:

mysql - 我们是否使用非 TEXT 列使数据库表变得复杂?

javascript - 在选择 mysqli 请求行下拉选项上填充表单字段

mysql标签表索引

mysql - 获得加薪后低于平均工资的员工

database-design - 在数据库中存储行之间的顺序的最佳方法是什么?

sql - 外部加入 where 条件

mysql - 如何在 Symfony2 数据库查询中使用 MATCH

mysql - 比较 mysql 表并更新值

javascript - firebase 中数据设计的最佳实践

mysql - 每行列子集为空的表的正确设计