日期:2014-05-16  浏览次数:20420 次

mysql执行多表查询,大数据,sql该怎么写。
假设两个表   A  B。两个表结构相同。现在要取出A表的所有字段和B表的set,rutime字段。两个表的ID相同。   

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

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

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

------解决方案--------------------
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万条记录都打印出来吗?显然是脑袋有毛病了

膜拜大神,我是来拿分的。
------解决方案--------------------
这个应该体现出来索引的作用了。查询上百万条的记录很慢了。
------解决方案--------------------
1.上面说的,建立有效的索引
2.如果数据量以后还会增加的话建立分表
3.表的结构涉及到字符比较长的独立出来新表中
4.查询使用存储过程来实现
------解决方案--------------------
desc select * from A as a,B as b where a.haoma = b.haoma给表加上索引,就很快的,如果有where条件查询,可以加上全文索引。