1、创建临时表,临时表只有一个字段,varchar类型,
2、 根据传入的参数(开始时间和结束时间), 从数据库B中查找,哪些表在该时间范围内,如果在该时间范围内,就把表的名称插入到临时表中。
3、读取临时表记录,并根据记录生成动态sql语句 语句: select * from (select * from 表A where ('时间' > '开始时间)' and ('时间' < '结束时间') union all select * from 表B where ('时间' > '开始时间)' and ('时间' < '结束时间') union all ...) as temptb order by cid asc limit x, y; 主要是根据判断满足条件的表的记录是否满足,如果满足就采用union集合记录,并进行排序,然后根据传入的参数,取第几页的数据。
4、测试的情况,临时表里只有一条记录,也就是数据库B中只有一张表,即这张表中2000条记录中判断满足条件的记录,然后集合起来再排序,然后取第几页数据。
5、测试中,是取了100条记录数据,
像我这样的测试, demo程序一直连接这mysql数据库,就一直没有断过,今天测试结果是,mysql服务器已经挂掉了。mysql进程占用内存已经上了2G
日志信息:
2013-09-12 05:26:22 11592 [ERROR] Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space。