数据量问题

herofyf 2004-11-20 08:44:49
我现在表中记录已经有100w条了,每天还以2W条增加。我在库中写了一个存储过程来处理这个表中数据,并返回会一个记录集。我发现当表中记录达到60w条我用程序调用这个存储过程时就已经返回timeout expire了,这样要处理很长时间,那我怎么办啊?各位能不能帮我想想办法啊?先谢谢了、
...全文
117 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-11-21
  • 打赏
  • 举报
回复
视图的可能有上几千w条记录,但查询时有条件限制,它会根据条件来取表,不是读所有的表
herofyf 2004-11-20
  • 打赏
  • 举报
回复
好!我再试试,但是我刚才说的视图的可能有上几千w条记录啊那怎么办呢?先谢谢啊!
zjcxc 元老 2004-11-20
  • 打赏
  • 举报
回复
不能返回数据? 我想你是写错了吧? 在查询分析器中测试
herofyf 2004-11-20
  • 打赏
  • 举报
回复
其能提高效率又能提高多少呢?老最后合并的视图可能上几千w条记录啊
herofyf 2004-11-20
  • 打赏
  • 举报
回复
但是我试过好象它不返回记录集给我啊!还有合并多表的数据,则视图的量不更大吗
zjcxc 元老 2004-11-20
  • 打赏
  • 举报
回复
视图无论在存储过程还是在查询中,都可以像表一样用
zjcxc 元老 2004-11-20
  • 打赏
  • 举报
回复
视图化的话,算分区视图了,经过测试是会提高效率的.
herofyf 2004-11-20
  • 打赏
  • 举报
回复
存储过程中可以使用视图吗?还有如果用视图的化那当中的数据量不是更大吗?那不会更慢啊?
zjcxc 元老 2004-11-20
  • 打赏
  • 举报
回复
另一种方法你可以用视图

create view v_qry
as
select * from tb_2003
union all
select * from tb_2004
go

--然后每年新加表的时候,修改视图,把新表加入视图中

查询的时候直接从视图中查数据就行了.
zjcxc 元老 2004-11-20
  • 打赏
  • 举报
回复
--这要看你具体的数据处理需求

--比如,你的表是每年一个,则一般表的命名规则是: tb_年份

--查询的存储过程就可以写成类似这样的
create proc p_qry
@date_begin datetime,
@date_end datetime
as
declare @s nvarchar(4000),@i int
select @s='',@i=0
while datediff(year,@date_begin,@date_end)>=@i
select @s=@s+' union all select * from tb_'+datename(year,dateadd(year,@i,@date_begin))
,@i=@i+1
set @s='select * from('
+stuff(@s,1,11,'')
+')a where 时间 between @date_begin and @date_end'
exec sp_executesql @s
,N'@date_begin datetime,@date_end datetime'
,@date_begin,@date_end
go
ljial 2004-11-20
  • 打赏
  • 举报
回复
declare @sql char(50)
declare @tablename char(50)
set @tablename='kck'

set @sql='select * from '+ @tablename

exec (@sql)
herofyf 2004-11-20
  • 打赏
  • 举报
回复
在存储过程中怎样动态决定表名啊!
zjcxc 元老 2004-11-20
  • 打赏
  • 举报
回复
每天2W条数据? 你的数据量不少了

试试分表,按时间段,比如1年或半年的数据放在一个表中,查询的时候,根据查询的时间段动态决定从那些表中取数

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧