我有一个sql运行了2天没有运行出来

JohnnyZz 发布于 2016/08/19 09:06
阅读 946
收藏 1

这个sql是:

CREATE TABLE test AS SELECT
t1.*
FROM
t_his_contract_d t1
INNER JOIN t_his_contract_d t2 ON t1.SEG_NO = t2.SEG_NO
AND t1.ORDER_NUM = t2.ORDER_NUM

数据库里面有5gb的数据,大概有380万条,请问怎么解决?


我推测结果只有两条

加载中
0
烟雨三月
烟雨三月
逻辑不对啊,对 t_his_contract_d 表的每一条记录都有,t1.SEG_NO = t2.SEG_NO

AND t1.ORDER_NUM = t2.ORDER_NUM,所以最终结果超过380万条。

你是要查询 t_his_contract_d 表中 SEG_NO 和 ORDER_NUM 有重复的记录吗?

SELECT t1.*
FROM t_his_contract_d t1
WHERE EXISTS
    (SELECT 1
     FROM t_his_contract_d t2
     WHERE t1.SEG_NO = t2.SEG_NO
       AND t1.ORDER_NUM = t2.ORDER_NUM
       AND t1.ID <> t2.ID)
ID 为唯一主键。

或者

SELECT t1.*
FROM t_his_contract_d t1
WHERE EXISTS
    ( SELECT 1
     FROM
       (SELECT SEG_NO, ORDER_NUM
        FROM t_his_contract_d
        GROUP BY SEG_NO, ORDER_NUM HAVING count(*) > 1) t2
     WHERE t1.SEG_NO = t2.SEG_NO
       AND t1.ORDER_NUM = t2.ORDER_NUM))



0
我是彩笔
我是彩笔
SELECT
count(1)
FROM
t_his_contract_d t1
INNER JOIN t_his_contract_d t2 ON t1.SEG_NO = t2.SEG_NO

AND t1.ORDER_NUM = t2.ORDER_NUM;

这个有多少条数据

我是彩笔
我是彩笔
回复 @sxgkwei : 5G也不会作死啊
sxgkwei
sxgkwei
大哥,你不看他同样的表,同样的2个字段关联查询的么?这SQL的最终结果等同于:select * from t1 。但t1有5个G的数据,结果等同但步骤上却要联合一次5个G的数据,不作死会死么?
我是彩笔
我是彩笔
回复 @我是彩笔 : 是不是被锁了 。 show processlist 看下
我是彩笔
我是彩笔
回复 @JohnnyZz : 这样都跑不出来?
JohnnyZz
JohnnyZz
根据我的推测,应该是2个
下一页
0
skhuhu
skhuhu
这么多 写sql 这样导会不会跑着跑着就死了 ? 手动操作呢
0
ked
ked
先看看执行计划有木有全表扫描。把能排除大量数据的条件防最后
0
AlanVision
AlanVision
可以先看看查询的速度怎么样,如果还行的话,可以采取分批次导入另外一张表,或者把两张表导出到另外一个数据库,再进行处理,不在原有数据库里进行,如果查询速度都不行的话,建议是先优化查询语句,一步一步来
0
f
fengzi_dk
试试 limit(1)? ,首先看看是查询慢还是下载慢,如果不是本地的数据库,把数据下载下来都得花费不小的时间
JohnnyZz
JohnnyZz
查询慢
0
IdleMan
IdleMan
不懂mysql,为什么这么简单、数据量一般的sql  mysql跑不出来
0
sxgkwei
sxgkwei
哈哈哈,这SQL写的也是没谁了。
0
挥痕
吓到我了
返回顶部
顶部