首页新闻找找看学习计划

查询数据超过10000条的时候,数据库就卡死.

0
[已解决问题] 解决于 2014-01-04 19:07

CREATE TEMPORARY TABLE tmp_table2

select isname,sex,isage,'3',telphone,g.illid,a1.mediaid,a2.doctorid,ordertime,remark,
edittime,state,a3.ysid,usertype,a4.kefuid,addtime,visittime,1,0,askedinfo,a4.kefuid as userid from yuyue2014.sickinfo as b
inner join yyghsys.gh_ill as g on g.illname=b.istype
inner join yyghsys.gh_media as a1 on a1.medianame=b.infofrom
inner join yyghsys.gh_doctor as a2 on a2.doctorname=b.zhuanjia
inner join yyghsys.mz_ys as a3 on a3.ysname=b.admit
inner join yyghsys.gh_kefu as a4 on a4.kefuname=b.kefu
where a1.hosid=1 and a2.hosid=1 and a3.hosid=1 and a4.hosid=1 limit 10000,5000;

这是我的SQL,我用临时表,当数据从10000开始的时候,查询就卡死.不知道为什么.

路过春秋的主页 路过春秋 | 初学一级 | 园豆:10
提问于:2014-01-04 10:43
< >
分享
最佳答案
1

inner join后面条件的字段有没有设置索引?

数据表是否能够做成索引视图,然后从索引视图使用SQL查询获取数据

说实话,1W条,其实不多.

肯定可以解决的

奖励园豆:5
chanchaw | 初学一级 |园豆:73 | 2014-01-04 13:28

后来我没有用inner join ,这个桥连太多了.导致卡死. 我这样解决我的问题的.

我想把原来的旧表数据导入到新表,但是两张表的结构和字段都不一样,然后我想到了用临时表,先改新表的结构,都改成字符串类型,这样任何类型的数据都可以导入进去了,等以后数据格式一致了,再改回来.接着,我就一个个字段级联更新,最终完成数据的导入.由于旧表的数据是直接写进去的,而新表都是用的外键表关联.所以通过级联更新,才得以解决.

路过春秋 | 园豆:10 (初学一级) | 2014-01-04 19:07
其他回答(3)
0

临时表是存放在内存里面的 很耗性能的 再加上你的sql那么多inner join 不卡才怪呢 看看能不能优化sql吧

wolfy | 园豆:2636 (老鸟四级) | 2014-01-04 12:14

如果单个inner 会不会有问题

支持(0) 反对(0) 路过春秋 | 园豆:10 (初学一级) | 2014-01-04 12:33
0

你那个要么是服务器的问题,要么就是数据引擎的问题,才一万,很少呀

zhengyingcan | 园豆:12 (初学一级) | 2014-01-04 17:04
0

有索引吗?

无忧IT学习 | 园豆:202 (菜鸟二级) | 2014-09-25 18:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册