Mysql
Table JOIN 和 CREATE new table 非常慢
我正在使用這樣的東西來創建一個新表:
CREATE TABLE result AS (SELECT calls.*, targ_with_planned_calls.* FROM calls INNER JOIN planned ON calls.first_id = planned.another_id);
這兩個表有大約 60k 和 80k 行。一張桌子有 5 列,另一張大約有 15 列。我正在使用 AWS RDS db.t2.medium 實例。我已經讓這個查詢執行了長達 10 分鐘,但它仍在執行。
這應該花這麼長時間嗎?我想知道性能問題是什麼。我原以為會很快。
您正在與 SELECT 一起執行 DDL
機械地做
CREATE TABLE AS SELECT
兩個命令
- 創建表
- 插入…選擇
這將在兩個
calls
和planned
我在一些較早的文章中寫過這種行為
Mar 23, 2012
: MySQL 鎖定而 CREATE TABLE AS SELECTAug 08, 2014
: MySQL 一致的非鎖定讀取與 INSERT … SELECT
聽起來你沒有索引:
在
calls
以 INDEX 或 PRIMARY KEY 開頭first_id
同上
planned
。another_id
您需要一個或另一個來避免執行 60k次80k 操作。使用索引,它將只有 60k加上80k 操作。
請提供
SHOW CREATE TABLE
以確認,並讓我們檢查其他問題,例如不同的數據類型。