当前位置: 代码迷 >> 其他数据库 >> SQL多表连查,同时查询N个表的内容,该怎么处理
  详细解决方案

SQL多表连查,同时查询N个表的内容,该怎么处理

热度:8578   发布时间:2013-02-26 00:00:00.0
SQL多表连查,同时查询N个表的内容
现在我数据库中每天会自动生成一张表,表的命名规范是固定字符加日期格式,如:
red_20110928,
red_20110929,
red_20110930,
red_20111001,
red_20111002,
red_20111003,
red_20111004,
red_20111005
......

现在我想根据时间段来查询表中的数据,而条件时间(regtime时间字段)段是可以随便选择的,比如:
 regtime between '2011-09-29 11:10:40' and '2011-10-03 11:10:40' 

求各位高手帮忙,急需!

------解决方案--------------------------------------------------------
SELECT * FROM (
SELECT * FROM red_20110928
UNION ALL
SELECT * FROM red_20110929
UNION ALL
....
SELECT * FROM red_20111005) A 
WHERE regtime between '2011-09-29 11:10:40' and '2011-10-03 11:10:40'
------解决方案--------------------------------------------------------
这种情况,不建议分表。

如果担心数据量过大,则应该使用分区表。


如果无法改变目前表的这种设计。 则

方法一: 每天增加一个新表的同时,把这个表加入到视图中 select * from (select * from t1 union all select * from t2 .... ) 但即使是视图中,你的SQL语句长度仍然是受限制的。总有一天,你没办法加表了。

方法二:使用MERGE存储引擎,类似于视力,但查询效率相对高一点儿。 同样会有限制。


建议还是使用分区表。
  相关解决方案