我们现在要开发一个Web项目 ASP.net + Sqlserver
现在客户端大约在350台左右,用户已经有约10GB的数据量,每天生成新数据大约在30M左右,数据量很大。Web平台的检索一直是我们的一个技术瓶颈,各何况是这么庞大的数据,要求检索100万条数据不能超过5秒,所以请大家踊跃发言。谢谢,分不够在加。
现在客户端大约在350台左右,用户已经有约10GB的数据量,每天生成新数据大约在30M左右,数据量很大。Web平台的检索一直是我们的一个技术瓶颈,各何况是这么庞大的数据,要求检索100万条数据不能超过5秒,所以请大家踊跃发言。谢谢,分不够在加。
解决方案 »
- 在asp.net中,当Button回发后,我想在Page_Load里让程序不执行Button1_Click,该怎么做?
- 京东的上传图片怎么做的
- 问一个关于动态生成控件的问题
- TreeView不会自动刷新!
- asp.net如何对access实现数据库备份!
- 错误 66 各个节在每个配置文件中只能出现一次。有关异常的信息,请参阅帮助主题 <location>。 E:\WebSite\web.config 35
- 一直听说VS2005可以减少70%的代码量,真是这样吗?
- 紧急求助
- gridview这样的特效怎么做
- 问书
- 在线等!!!关于框架内有滚动条,移动滚动条,框架内的图像串了。请问有何方法能解决这样的问题!!!谢谢!!!!
- ASP.net中怎么实现DATAGRID的多行同时删除?
4、数据缓存
谢谢您的参与,数据缓存多少才更合适呢?如果每人检索1M的数据那么服务器的内存将要被占去了350M左右的空间,这个要求会不会太高呢?
http://blog.csdn.net/zlp321002/archive/2006/03/01/613098.aspx
--全文索引有很强大的检索数据功能.他能检索相似词.关键字的附近词.等等..
是的,我也正在看,能否指点一二?
提高服务器性能,将web服务和sql服务分布在不同的服务器中
配置sql索引
关于聚簇索引和非聚簇索引的分配一定要做好,可以惊人的提高效率。建议你察看一篇文章,名字叫“海量数据库的查询优化及分页算法方案”
去google或百度搜索看下,相信会对你有很大帮助。
To CCjian(默契) 能否详细一些?谢谢!
如何实现,能否可以共享以下?
我现在编写的分页存储过程检索
10000条以内的纪录可以控制在2秒以内,但是在查询20000条左右时就已经超过4秒了。
(
@ItemsPerPage int, --页面大小
@CurrentPage int, --页码
@TableName nvarchar(100), --查询表名
@SortField nvarchar(50) -- 排序字段
)
AS
DECLARE @Command nvarchar(4000)
BEGIN
SET @Command = 'SELECT * FROM '+
' (SELECT TOP ' + CAST(@ItemsPerPage AS nvarchar(100))+' * FROM '+
' (SELECT TOP '+CAST( @ItemsPerPage*@CurrentPage AS nvarchar(100)) +' * FROM '+
' (SELECT * FROM '+ @TableName+') AS t0 '+
' ORDER BY '+ @SortField + ' ASC) AS t1'+
' ORDER BY ' + @SortField + ' DESC) AS t2 '+
' ORDER BY ' + @SortField
EXEC (@Command)
END
GO
这是我的存储过程,各位大虾看看,能否给优化以下。谢谢!
CREATE PROCEDURE SP_Pagination
@TableName nvarchar(100), --表名
@PrimaryKey nvarchar(100),--主建
@PageSize int, --页面大小
@CurrentPage int, --页码
@SortField nvarchar(100) --排序字段
AS
BEGIN
DECLARE @StartRow nvarchar(50)
DECLARE @SqlText nvarchar(1000)
IF @CurrentPage < 1
BEGIN
SET @CurrentPage = 1
END
SET @StartRow = CAST((@CurrentPage - 1) * @PageSize + 1 AS nvarchar(50))
SET @SqlText =
'
DECLARE @CurrentRow nvarchar(20)
SET ROWCOUNT '+CAST(@StartRow AS nvarchar(20))+'
SELECT @CurrentRow = '+@PrimaryKey+' FROM ' + @TableName+ ' ORDER BY ' + @SortField +'
SET ROWCOUNT '+CAST(@PageSize AS nvarchar(20))+'
SELECT * FROM '+@TableName+' WHERE '+@PrimaryKey+' >= @CurrentRow ORDER BY '+@SortField+'
'
EXEC SP_EXECUTESQL @SqlText
END
GO
建议认真的看完下面的文章:翻动100万级的数据 —— 只需几十毫秒 之揭秘篇:有详细的说明,不要错过。 http://blog.52forum.com/jyk/archive/2005/12/06/305.html
>>>请大家继续,我在一个109万的记录集中查找一条数据现在需要大约30秒请用下面的格式试一下,会在一秒内返回结果的!select top 1 * from yourTable where 你的查询条件 注意:加上 top 1 这一点很重要。另外排序字段要有索引 !你的SQL Server 2000 打上了 sp4的补丁了吗?这一点也很重要!