mysql - 从包含+ 6500万条记录的Mysql连接创建临时表

标签 mysql sql temp-tables create-table

我正在使用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

一切都直接了,唯一的问题是创建这个临时表过程花费了20多分钟,如何加快速度?

最佳答案

对于此查询:

SELECT c.id, ct.tm_id, c.code, t1.bincode, c.AU, c.TA,
       ct.fin_amount, ct.m_id
FROM pm_customers c INNER JOIN
     client_transactions_final ct
     ON c.id = ct.id;

您可能需要 client_transactions_final(id, tm_id, fin_amount, m_id) 上的索引。这是查询的覆盖索引,因此这应该会提高性能。

我不相信您真的需要创建这个临时表。有了正确的索引,连接通常会非常快。当您有聚合和更复杂的查询时,临时表更有意义。我并不是说它不起作用,只是这不是我想到的第一个解决方案。

关于mysql - 从包含+ 6500万条记录的Mysql连接创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51275609/

相关文章:

C# - Entity Framework 代码优先 - 将对象映射到两个表中

sql-server - 如何从临时表中获取列列表?

mysql - 从查询执行中删除使用临时和文件排序

mysql - 对于每个访问创建它的脚本的用户来说,mysql 临时表是唯一的吗?

php - BCRYPT 和 Random SALTS 在数据库中一起

php - echo mysql DATE(table_date) 未定义常量

c# - 如何通过MySqlReader C#读取多个请求

php - 无法与php建立数据库连接

sql - 如何判断sql表是否是Temporal表?

mysql - 将数据插入其主键由 2 列组合的表