【问题标题】:Very slow performance processing 40M+ records MySQL tables处理 40M+ 记录 MySQL 表的性能非常慢
【发布时间】:2016-04-09 05:59:39
【问题描述】:

我正在 MySQL 数据库上处理超过 40M 条记录。场景如下:

给定 2 个结构相同的表,包含超过 4000 万条价格信息记录:

表 1

product_id  price    date
101         5.7      2016/1/1
102         11.6     2016/1/1
104         8        2016/1/1
…           …         …

表 2

product_id  price    date
101         5.9      2016/1/2
103         20.3     2016/1/2
104         8        2016/1/2
…           …         …

我正在寻找两个表上存在多少 product_id,我正在使用以下查询进行搜索:

SELECT count(*) FROM t1 a,t2 b where a.product_id=b.product_id ;

SELECT count(*) FROM t1 a,t2 b on a.product_id=b.product_id ;

需要半个多小时才能得到结果,有什么方法可以提高性能吗?

【问题讨论】:

  • 查阅说明及索引的使用
  • 问题缺少表结构、有问题的存储引擎、EXPLAIN 的输出和正在使用的硬件。性能取决于许多因素,而不仅仅是您的查询和记录数量。硬件起着巨大的作用。

标签: mysql database performance


【解决方案1】:

最好的办法是在 product_id 上创建索引。

为此,请阅读create index,即

create index idx_1 on t1 (product_id);
create index idx_2 on t2 (product_id);

【讨论】:

    猜你喜欢
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2014-02-27
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    相关资源
    最近更新 更多