最近遇到一个数据库问题,有6张日志表,分别对应登陆、查询、删除等操作,表字段完全相同。现在需要从这6张表中取出一些数据,分页展现在页面上。本来用union all就能解决,但听说它的性能很不好(具体原因不清楚),因为我们采用内存分页(每次只从数据库取出几条数据),所以分别从每张表取出数据放到list,再从list中取,这种方法不行,因为日志表的数据很多,这种方式违背的内存分页的理念。
我又想了个办法,就是建一个临时表,分别从6张表中取出想要的数据,放入临时表中,然后从临时表中分页获取。这种方案和上面的list方法类似,但整个过程都是在数据库内部完成,避免了大数据量的传输,速度应该能够快很多,而且也能够很好的解决排序问题。但有个问题,就是这张临时表什么时候删除呢,不可能页面展现完了就删除,因为还要分页,只有用户离开本页面才可以,可我不知道怎么把我这个点。
关于内存处理和数据库优化我都不太懂,不知道该怎么办。