mysql执行多表查询,大数据,sql该怎么写。

php中文网
发布: 2016-06-23 14:25:52
原创
1336人浏览过

假设两个表   A  B。两个表结构相同。现在要取出A表的所有字段和B表的set,rutime字段。两个表的ID相同。   

因为数据量比较大,两个表在100w左右,之后还可能会有多个这样大的表。
我在phpmyadmin中拿

select * from A as a,B as b where a.haoma = b.haoma

测试的时候就已经跑死掉了。哪位大虾帮助写一下这个sql


回复讨论(解决方案)

select ecs_ershi.* ,ecs_erjiu.set from ecs_ershi inner join ecs_erjiu on ecs_ershi.haoma=ecs_erjiu.haoma limit 0,29
登录后复制

我写了这个语句,查询成功了。但是数据量一大,就死在那了。 
我想将查询出来的数据存储到C表,有什么好方法可以?

does it has indexes on A.haoma and B.haoma?

does it has indexes on A.haoma and B.haoma?
亲,可以解释下什么意思不。

A.haoma 与 B.haoma 建索引了吗?

不建索引,作死!!!

haoma 是主键么,如果不是的话建立索引试试。

select * from A as a,B as b where a.haoma = b.haoma
只要在 haoma 上都建有索引,查询只是瞬间的事情
但是输出可是要很花一些时间的!
你把100万条记录都打印出来吗?显然是脑袋有毛病了

直接
insert into c(......) 
select ecs_ershi.* ,ecs_erjiu.set 
from ecs_ershi inner join ecs_erjiu on ecs_ershi.haoma=ecs_erjiu.haoma 
limit 0,29
即可, 

不要输出。。。

select * from A as a,B as b where a.haoma = b.haoma
只要在 haoma 上都建有索引,查询只是瞬间的事情
但是输出可是要很花一些时间的!
你把100万条记录都打印出来吗?显然是脑袋有毛病了
膜拜大神,我是来拿分的。

select * from A as a,B as b where a.haoma = b.haoma
只要在 haoma 上都建有索引,查询只是瞬间的事情
但是输出可是要很花一些时间的!
你把100万条记录都打印出来吗?显然是脑袋有毛病了
那查询出来之后除了做分页处理之后还能做什么比较快速的可以打印出来。

这个应该体现出来索引的作用了。查询上百万条的记录很慢了。

1.上面说的,建立有效的索引
2.如果数据量以后还会增加的话建立分表
3.表的结构涉及到字符比较长的独立出来新表中
4.查询使用存储过程来实现

phpmyadmin执行多了卡死(php.ini中设置set_time_limit(0);),可以试着用navicate for mysql

desc select * from A as a,B as b where a.haoma = b.haoma给表加上索引,就很快的,如果有where条件查询,可以加上全文索引。

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号