【发布时间】:2012-09-03 04:13:28
【问题描述】:
我有如下声明
CREATE TABLE INPUT_OUTPUT
SELECT T1_C1,.....,T1_C300, T1_PID from T1
INNER JOIN (SELECT T2_C1,T2_C2,T2_PID FROM T2) as RESPONSE ON T1.T1_PID=RESPONSE.T2_PID
它的运行速度非常慢 - 现在运行了 5 个小时。这两个表有大约 400 万行和几百列。
我有一台 8 核、64gb ram ubuntu-linux 机器,使用 top 我可以看到 mysql 进程仅在一个内核上使用了 3gb,尽管它的使用率始终保持在 100%。令人不安的是,并非所有内核都在使用。
我想比这更快地创建表。
我应该使用
CREATE TABLE INPUT_OUTPUT LIKE T1
通过为 T2 中相关的列添加额外的列来更改 INPUT_OUTPUT,然后填充它?我不确定这样做的语法以及它是否会导致加速。
【问题讨论】:
-
我很困惑:子查询没有 PID 列。
-
HPC 与慢速 SQL 查询无关 - 删除了 HPC 标签。
标签: mysql linux performance join