【问题标题】:How do I structure MySQL to store stock information?如何构建 MySQL 来存储股票信息?
【发布时间】:2012-09-22 19:23:22
【问题描述】:

我想在 MySQL 中存储股市数据。有大约 6,000 只个股要储存。每个都有以下数据:

Symbol    Date          Open      High    Low    Close    Volume
ABCD      2012-09-22    50.00     55.25   48.73  51.23    34,002,212

每个交易日都有一个条目。

在我看来,我可以创建一个表,每个条目构成一个巨大的表,或者我可以创建 6,000 个表,每个股票一个表。每天都会添加新条目。

我最终会想查询数据库以提供两个日期之间两个或多个符号的数据。

在 MySQL 中存储这些数据的最佳方式是什么?

【问题讨论】:

    标签: mysql database


    【解决方案1】:

    听起来像是一张以 Symbol 作为主键的表。这应该为您提供符号上的聚集索引(加快速度)。

    我认为拥有 6000 个表是个坏主意。您的 Select 查询不会太漂亮。

    【讨论】:

    • 主键必须是唯一的。在他的情况下,每个股票代码将有不止一个记录。在符号和日期上创建唯一索引是个好主意
    【解决方案2】:

    只要您可以动态管理 6000 个表的创建,您就可以根据要优化的查询类型选择任何一种方法。

    6000 个表的问题不在于它的 SQL 丑陋或漂亮。 (我的意思是,你真的在​​乎吗?)

    在一张表上工作的 SQL 就像

    Select <columnslist> FROM ScripDataTable
    Where  scripcode = '<YourChoice>'
    And .... 
    

    在 6000 表上工作的 SQL 就像

    Select <columnslist> FROM (Select tableName FROM TableDictionary
    Where  tableName Like '%<YourChoice>%')
    Where .... 
    

    如果您决定向表中添加额外的列,就会出现每个脚本一个表的问题。我在 excel 中维持了大约 5 个票据的价格,最近决定添加大量从交易所发布的统计数据。 5个脚本,我花了一天时间手动添加。

    【讨论】:

      【解决方案3】:

      您绝对不想要 6000 个表。 :) 一张桌子当然可以处理这个。您可能会考虑在 Symbol 和 Date 上创建索引,因为这就是您要查询的内容。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2020-04-27
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 1970-01-01
        • 2015-08-05
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        相关资源
        最近更新 更多