【问题标题】:30 Million Rows in MySQLMySQL 中的 3000 万行
【发布时间】:2012-06-05 05:47:08
【问题描述】:

晚上,

我正在经历一个漫长的过程,将数据从一个 15 岁的只读数据格式导入 MySQL,以从中构建一些较小的统计表。

我之前构建的最大表(我认为)是 3200 万行,但我没想到它会变得那么大,而且真的让 MySQL 吃力。

表格将如下所示:

surname    name    year    rel    bco    bplace    rco    rplace
Jones      David   1812    head   Lond   Soho      Shop   Shewsbury

所以,小整数和 varchars。

任何人都可以提供有关如何使其尽快发挥作用的建议吗?任何列上的索引是否会有所帮助,或者它们只会减慢查询速度。

每一列中的大部分数据都会被重复多次。有些字段的可能值不超过 100 种。

我将查询表的主要列是:surname、name、rco、rplace。

【问题讨论】:

  • 索引加快数据检索并减慢数据插入。一般来说,它们是一件非常好的事情:我建议为您可能查询表的每一列创建它们。
  • 3000 万行对于现代 RDBMS 来说并不算多。当然,除非您在没有索引的情况下进行全表扫描。
  • 感谢您的评论。我认为这是我的 3200 万的问题之一。行表。插入行导致崩溃。
  • 索引真的很有帮助;他们存在的理由是加快查询速度而不是减慢查询速度!首先插入索引需要一段时间,因为它需要收集整个表的值,但之后您会发现查询要快得多。
  • 嗯...您在插入或查询大型数据集或两者时遇到问题?

标签: mysql database-design database-optimization


【解决方案1】:

INDEX 在列上可加强搜索。 尝试INDEX 您将在查询中更频繁使用的列。正如您所提到的,您将使用列surname, name, rco, rplace。我建议您将它们编入索引。

由于该表有 3200 万条记录,因此编制索引需要一些时间,但值得等待。

【讨论】:

  • 谢谢。我现在只是在建桌子。所以我可以在 insert 上而不是在 c 上建立索引。 3000 万行。
  • @KohjahBreese:双向检查,您可能会发现在 3000 万行上创建索引一次比增量构建索引要快。
猜你喜欢
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 2010-11-22
  • 2013-04-29
  • 2011-06-12
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多