【问题标题】:Too long execution of comparing operation of two mysql tables两个mysql表的比较操作执行时间过长
【发布时间】:2012-09-22 06:39:10
【问题描述】:

我有 vps Mem:524 (215used) Swap:524(75used) ,mysql 5.1.61 和三个表。

具有一列“数据”的“新”表包含 100 000 条记录。

记录1

记录2

记录3

具有一列“数据”的“旧”表包含 1 000 000 条记录。

记录1

记录4

记录5

表“结果”也有一列“数据”。

我将表“新”与“旧”表进行比较,并将不在“旧”表中的记录插入到“结果”表中。在这个例子中,它将是

记录2

记录3

我使用查询

INSERT INTO result 

SELECT data FROM new 

LEFT JOIN old USING (data) 

WHERE old.data IS NULL

我的问题 - 这个查询执行了一个多小时甚至更多(我等不及了)。

我想知道更多这种mysql操作的快捷方法。理想 - 10-20 分钟。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我认为这个查询会更快:

    insert into result
    select data 
    from new n
    where not exists 
    (select 1 from old where data = n.data)
    

    并在newold 表中归档data 的索引(但不在result 表中) 将显着提高性能。

    您可以通过以下方式添加索引:

    create index ind1 on old(data)
    

    【讨论】:

    • 同理。执行超过一小时,尚未完成
    • data 字段的类型是什么?它包含什么样的价值观?
    • 数据类型:varchar(100),值:ethomason ethomas ethstud etico,索引未定义 - 可能是这个?
    • newold 表中创建索引,它会运行得更快。
    猜你喜欢
    • 2019-12-01
    • 2019-12-27
    • 1970-01-01
    • 2018-01-19
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多