Asp+Sqlserver查询百万数据

ser_3vlogic 2007-07-04 05:50:03
如题,高手可不可以给出一些解决方案,当然查询速度越快越好~
还有,小弟在Sqlserver里加完索引,但是感觉速度和原来没有什么变化...索引应该不用特意的去调用吧.谢谢,谢谢,在线等~
...全文
351 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyl180555 2007-07-06
  • 打赏
  • 举报
回复
CREATE procedure [dbo].[userpage]
(
@SqlWhere varchar(1000)='', --查询条件, 可为空
@pagenum int=20, --每页的记录数
@beginline int=1, --第几页,默认第一页
@SqlTable varchar(1000), --要查询的表或视图,也可以一句sql语句
@SqlColumn varchar(1000), --查询的字段
@SqlPK varchar(50), --主键 必须填写,自动编号字段
@SqlOrder varchar(200) , --排序,可为空,则默认为以主键倒序排列
@GetCount bit=0
)
as
set nocount on
declare @PageLowerBound int
declare @PageUpperBound int
declare @sqlstr nvarchar(2000)
if @SqlWhere=''
begin
set @SqlWhere=' where 1=1 '
end
else
begin
set @SqlWhere=' where 1=1 and '+@SqlWhere+' '
end
if @SqlOrder=''
begin
set @SqlOrder=' order by '+@SqlPK+' desc'
end
else
begin
set @SqlOrder=' order by '+@SqlOrder
end
if @SqlColumn='' set @SqlColumn=' * '
if @beginline=0 set @beginline=1
IF @GetCount=1
BEGIN
declare @Count int
declare @sCount int
set @sqlstr=N'select @sCount=count(1) FROM '+@SqlTable+@SqlWhere
Exec sp_executesql @sqlstr,N'@sCount int outPut',@Count output
select @count as totalCount
END
else
begin
if @beginline=1
begin
set @sqlstr='select top '+cast(@pagenum as varchar(10))+' '+@SqlColumn+' from '+@SqlTable+@SqlWhere+@SqlOrder
Exec sp_executesql @sqlstr
set nocount off
end
else
begin
set @PageLowerBound=(@beginline-1)*@pagenum
set @PageUpperBound=@PageLowerBound+@pagenum
create table #pageindex(temporary_id int identity(1,1) not null,temporary_nid int)
set rowcount @PageUpperBound
set @sqlstr=N'insert into #pageindex(temporary_nid) select '+@SqlPK+' from '+@SqlTable+@SqlWhere+@SqlOrder

Exec sp_executesql @sqlstr

set @sqlstr='select '+@SqlColumn+' FROM '+ @SqlTable +' inner join #pageindex p on '+@SqlPK+'=p.temporary_nid and (p.temporary_id>'+STR(@PageLowerBound)+') and (p.temporary_id<='+STR(@PageUpperBound)+')' +@SqlOrder

Exec sp_executesql @sqlstr
set nocount off
drop table #pageindex
end
end
GO
ld2099 2007-07-05
  • 打赏
  • 举报
回复
索引肯定建
加存储过程
有分页的话也要用存储过程,这样的话sql压力就大了
libao1983 2007-07-05
  • 打赏
  • 举报
回复
100w,如果不是用Like查询的话,就不是太慢。
所以尽量避免进行like查询。

如果是多条件查询,其中包含Like条件查询的话,就先按照别的条件把数据取出放入临时表,然后针对临时表进行Like查询。
kaiy_ai 2007-07-05
  • 打赏
  • 举报
回复
mark 存储过程
x1234521 2007-07-05
  • 打赏
  • 举报
回复
用分页存储过程进行分页显示,这样不管数据的多少,显示的速度都比较理想(当然记录数越多速度还是会有影响的,但不明显)

利用 top n,max,min的方法来做就可以了,网上有例子,搜索“高效分页存储过程”
ser_3vlogic 2007-07-04
  • 打赏
  • 举报
回复
再补充一点,这里仅仅用到查询,像插入,删除,更新都用不到~
panepan 2007-07-04
  • 打赏
  • 举报
回复
一般100万的数据用存储过程速度不会太慢
fictioner 2007-07-04
  • 打赏
  • 举报
回复
存储过程+GetRows()
ser_3vlogic 2007-07-04
  • 打赏
  • 举报
回复
楼上兄弟,再提示的具体点?
Zack999 2007-07-04
  • 打赏
  • 举报
回复
索引建完了,还要有限的利用阿!

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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