【发布时间】:2018-07-11 00:27:48
【问题描述】:
我正在使用 Mysql 我有两个表,我在 proc 运行期间对其进行了多次选择,每个表都有更多的棕褐色 1 亿条记录,为了加快 proc 我想执行此操作,将其作为临时表(包含65+ 百万条记录),稍后在过程中使用此表。创建它。我在用 。下一个 。
create temporary table T_join (INDEX(tm_id))
SELECT
t1.id,
t2.tm_id,
t1.code,
t1.bincode,
t1.AU,
t1.TA,
t2.fin_amount,
t2.m_id
FROM
pm_customers t1
INNER JOIN
client_transactions_final t2 ON t1.id = t2.id
直截了当的唯一问题就是创建这个temp table proc 耗时20多分钟,如何加快速度?
【问题讨论】:
-
好吧,你必须在某个地方咬紧牙关。一旦你付出了等待 20 分钟的代价(并且还牺牲了一些内存空间),你就有了一个索引临时表,你可以使用它来加快其他一切。
-
@Tim Biegeleisen 我知道,但我不确定它是否会在 20 分钟内完成 :) 这可能需要更长的时间,所以我正在努力寻找减少运行时间的解决方案
-
该视图听起来像是它大约 65% 的数据...这比 2 次全表扫描更好(它可能会这样做)...很难在没有看到的情况下推荐一些东西过程虽然
-
@Ctznkane525 有视图。它很糟糕,因为我无法在其上创建索引,而且它在两个沉重的表之间始终是相同的连接,我将调用该视图
-
临时表的索引改为主键会不会更快?基于主键和索引的工作原理
标签: mysql sql temp-tables create-table