MySQL在join语句中查询速度非常慢

时间:2016-06-08 14:30:45

标签: mysql join

所以我有两张桌子:

| id     | make      | model        | color    |
| 1234   | BMW       | M2           | blue     |
| 2345   | Audi      | A3           | black    |

| id     | date       | price       | 
| 1234   | 2015-09-23 | 34000       | 
| 1234   | 2015-10-23 | 33500       | 

第一张表有大约500000辆独特车辆。第二张表的价格来自每天的车辆几天(将来会更多)

现在我想执行一个简单的连接语句:

SELECT        count(v.id)
FROM          nm_voertuig v
JOIN          nm_voertuig_statistieken vs
ON            v.id = vs.id
WHERE         model = 'BRZ'

如果我删除连接速度非常快,但加入时加载大约需要20秒。
我试图添加一些索引。但它似乎没有帮助。

我做错了什么?

修改
nm_voertuig中的索引: https://gyazo.com/cd1628862574ee3c7beb0520484819cc

编辑2
这是EXPLAIN的结果: https://gyazo.com/18c1ad77718e8cdf9d19a3846cc4472c

1 个答案:

答案 0 :(得分:2)

@Wouter den Ouden:

我已经看到您的查询使用索引。

试试这个:首先加快计数速度,只加入一行而不是全部加入。

SELECT cnt.*, vs.* FROM (
    SELECT        count(v.id), id
    FROM          nm_voertuig v
    WHERE         model = 'BRZ'
  ) AS cnt  
JOIN          nm_voertuig_statistieken vs
ON            cnt.id = vs.id;

请告诉我它是否适合您