优化MysQL查询,

时间:2017-03-01 07:46:19

标签: mysql mysql-workbench

我有简单的MySQL查询,运行速度非常慢。

INSERT INTO People_by_County (City, County, State, score, Month_, person_id)
SELECT people.City, people.County, people.State, PPL_month.score, PPL_month.Month_, PPL_month.person_id
FROM PPL_month
INNER JOIN people ON PPL_month.person_id = people.person_id

人员表中的700K行和PPL_month表中的2,9Mln行。问题是,在我对不同的表运行类似的查询之前,在1个表上,在另一个400Mln上有700K行,查询在6h完成。而且这个运行了大约24小时。有什么想法,为什么它这么慢?当时没有其他查询正在运行,因此没有人使用RAM。

Bellow你可以看到对查询的解释。

enter image description here

1 个答案:

答案 0 :(得分:1)

首先在INDEX表和PERSON表上创建PPL_Month。然后尝试执行此查询

SELECT people.City, people.County, people.State, PPL_month.score, PPL_month.Month_, PPL_month.person_id
FROM PPL_month
INNER JOIN people ON PPL_month.person_id = people.person_id

执行需要多长时间?记下该时间并记下同一查询的执行时间,而不在两个表上创建索引。 你一定会得到更多时间。 因此间接地表明您要插入的数据更依赖于获取的速度。 因此,一旦快速获取,显然插入速度比前一个快。

希望这会有所帮助。