现有一个实时系统,数据量很大,一天大概有几百万条数据。在设计数据库的时候,
这些数据是分表进行存储的(按天进行)
如:2006-11-01日数据存储在 20061101 表内
2006-11-02日数据存储在 20061102 表内
其它的依此类推----------------要实现的功能---------------
1.在查询的时候会遇到跨时间段(跨日、月、年)进行查询
如:查询 2006-11-01 至 2007-01-01 的数据
2.数据要进行分页显示,而且为了提升查询速度,考虑每次只提取每页将要显示
的数据记录数,这样就得先统计出在符合条件的时间段内数据的条数,然后才
能计算得出要分多少页。因为每天数据的记录并不都是一样的,会出现下面的
情况,在一页中显示两天的数据或者更多天的数据(因为有些数据本身就很少)----------------问题------------------
1.如何根据输入的一个时间段,很好的分解出要查询哪些表,并且正确的将符合
条件的数据筛选出来
2.在大数据量、不固定查询表的情况下进行数据统计
3.跨表的分页
4.速度的优化
5.使用存储过程来实现这一数据查询是否合适?效率如何?-------------
请各位出提出一些解决的方案,小弟在此感谢了
这些数据是分表进行存储的(按天进行)
如:2006-11-01日数据存储在 20061101 表内
2006-11-02日数据存储在 20061102 表内
其它的依此类推----------------要实现的功能---------------
1.在查询的时候会遇到跨时间段(跨日、月、年)进行查询
如:查询 2006-11-01 至 2007-01-01 的数据
2.数据要进行分页显示,而且为了提升查询速度,考虑每次只提取每页将要显示
的数据记录数,这样就得先统计出在符合条件的时间段内数据的条数,然后才
能计算得出要分多少页。因为每天数据的记录并不都是一样的,会出现下面的
情况,在一页中显示两天的数据或者更多天的数据(因为有些数据本身就很少)----------------问题------------------
1.如何根据输入的一个时间段,很好的分解出要查询哪些表,并且正确的将符合
条件的数据筛选出来
2.在大数据量、不固定查询表的情况下进行数据统计
3.跨表的分页
4.速度的优化
5.使用存储过程来实现这一数据查询是否合适?效率如何?-------------
请各位出提出一些解决的方案,小弟在此感谢了
(@tm DateTime --通过此时间取得表名)
RETURNS datetime
AS
begin
declare @Sunday datetime
declare @Monday datetimeselect @Monday = dateadd (week, DATEDIFF(week, 0, @tm), 0)
set @sunday = dateadd(day,-1,@Monday)
return @sunday2.在数据量大的情况下,不要做实时统计,应该根据需要设计一个统计表,用SQL的TASK功能,比如在每天凌晨访问量最少的时间里对数据表进行统计(记住,只统计前一天的数据,每天统计一次),统计后的数据,插入到统计表.在显示统计数据时,就只要去统计表里查找就好了.3.对于跨表的分页,是个棘手的问题,在我的项目里,是这样实现的,比如查找1号到20号的数据,跨了好几个星期,这样,我一开始只显示第一个星期的数据(比如1号到3号是星期五到星期日,在一个表里),因为数据量大,所以肯定每天都有数据,而且有很多页,这样不至于页面为空记录,然后,在分页导航上加上"上一页,下一页,上一星期,下一星期"根据他实际点击的按钮进行动作,比如点到下一天了.那就再去下个星期的表里进行查找...此方法不是万全之策..但也可以用用.4.速度,用大数据量分页的存储过程,就没有任何速度问题了,每次就取20条..快得很.5.就是要用存储过程来实现.