【问题标题】:Best mysql structure for my data table我的数据表的最佳 mysql 结构
【发布时间】:2012-07-27 03:00:42
【问题描述】:

我是 mysql 的新手,任何帮助将不胜感激!

我的主表包含产品信息。 (9000 多种产品)

    id       name          size     color
    9809355  product one   small    blue
    0109425  product two   large    black

我还有一个 cron 脚本,它每小时(来自 ebay 或亚马逊)获取 每个产品 的以下数据:

    id       price     timestamp
    9809355  $672.00   07/26/2012 @ 2:00pm
    0109425  $82.00    07/26/2012 @ 2:00pm

(价格总是在变化)

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

我的选择似乎是为每种产品创建一个表,或者将我的所有数据放入一个表中以显示产品价格。

【问题讨论】:

  • 史蒂文,这个过程需要多长时间?我的意思是每小时几秒钟收集所有产品,还是每隔几秒钟收集一个产品?
  • 您需要将历史数据保留在数据库中还是在更新时丢弃?
  • 脚本一次检查所有产品,并在找到价格时存储价格,因此可能需要一段时间才能完成
  • 数据被平均然后每天丢弃。然后在一个月后平均并丢弃每日平均值。

标签: mysql database schema


【解决方案1】:

为每个产品创建一个表格很少是正确的方法。这会使连接变得不必要地复杂化——如果您想获得所有产品的列表,您将如何使用单独的表来实现?

如果您想将价格数据与价格详细信息分离,您可以创建一个与产品信息表具有一对一关系的价格表。我一般不提倡一对一的关系,但有时这是正确的方法。

【讨论】:

  • 如果我将所有产品数据放在一个表中,大约有 50 万个条目。这不会减慢查询速度吗?另外我一次只查询一种产品的数据,所以效率低下
  • 如果您在id 列上有一个索引并且您在查询中使用了WHERE id = ? 子句,那么查找应该非常快。索引查找将是 O(log n) 复杂度;在 500k 行表中通过其 ID 搜索单行应该对索引进行 maximum 19 次遍历操作,假设平衡二叉树 - 并且 mysql 使用 b-tree 索引通常比这更有效率。 (仅供参考,如果 id 是主键,那么它已经定义了一个隐式索引。)
猜你喜欢
  • 1970-01-01
  • 2017-09-26
  • 2017-01-08
  • 2011-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多