------解决方案-------------------- select count(*) from 数据库1.a类数据 where exists (select 1 from 数据库2.table_20110909 where userid = 数据库1.a类数据.userid) or exists (select 1 from 数据库2.table_20110910 where userid = 数据库1.a类数据.userid) or exists (select 1 from 数据库2.table_20110911 where userid = 数据库1.a类数据.userid)
------解决方案-------------------- 数据量很大的话用临时表处理就可以了。
------解决方案--------------------
2)能否说一下你们的实现思路或者关键的sql语句 可以用merge 存储引擎为实现 OR EXISTS、UNION来实现
------解决方案-------------------- 小菜鸟也插句嘴,如果数据量很少 1类的嵌套可以, 如果数据量较大,那就用临时表吧 create temprary table tem_id(id int) insert into tem_id select id from 库2.table1 insert ignore into tem_id select id from 库2.table2 ...... insert into tem_id select id from 库2.table12 select count(*) from 库1.table a inner join tem_id b on a.id=b.id 呵呵 我还没接触跨DB 操作 假想都是在一耳光服务器上
------解决方案-------------------- 都是高手呀,咋就我一個菜呢
------解决方案-------------------- 也许按userid进行join union到临时表会更好点?
------解决方案-------------------- 我不知道.
------解决方案-------------------- 用hash表。大数据处理一般把需要的数据一下子找出来放到内存,在内存中处理,如果用表连接得处理到何年何月,反正现在的内存都白菜价了
------解决方案--------------------
------解决方案-------------------- 这个问题我们也遇到过,我们的解决方法是:建立一张用户表,UserInMonth(userid)表里面只放不重复的用户Id,把(table_20110909,table_20110910,table_20110911)的用户Id放到一张User表里面userid都统一放到这个表里面去。判断的时候select count(1) from user u inner join UserInMonth um on u.userid=um.userid.至于数据可以用存储过程,或者一些数据仓库的用具。 另外说一点,把表拆分的每日一张表,就是因为数据量比较大。。。我以前做一个GPS项目的时候,也是这么做的,每天一张表,一张表5G左右的数据。我们是把原始数据和计算过的业务数据分离的思路来实现的。。。希望对你有帮助。
------解决方案-------------------- 如果数据量非常大的话,还硬要在数据库处理,就有点缘木求鱼的感觉了。 放入hadoop处理。哈哈。
------解决方案--------------------