求:如何用ASP快速的从有上亿条记录的数据表中查找到自己需要的记录 偶曾试过从1180000条记录的数据表中按条件检索数据。结果速度奇慢不说,最后还超时了~请问各位大虾有什么好的办法,能快速的实现目的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我试过在SQL查询分析器里面从1100000条记录中检索出50000条记录,要大概1:30秒的时间~我想存储过程也不会快多少吧! 不知道你每一条记录有多大。如果是SQL Server 2000/2005数据库,可以根据如下步骤来优化速度:1。是否建了了恰当的索引?如果没有,请建立适当的索引。至于什么样的索引能称为“适当”,请参考SQL Server BOL。2。如果有恰当的索引,那么是否索引的碎片过多?如果过多,请用DBCC工具整理。3。如果索引碎片很低,那么可以考虑将数据文件和主索引方在一个文件组中,其他索引方在另一个文件组中。将两个文件组分布在不同的IDE通道或者不同的SCSI硬盘上,以便SQL Server能够利用多线程并行读取数据。4。如果3仍不奏效,可以考虑使用RAID进一步提高磁盘IO,并适当增大内存以减少磁盘交换。5。如果4仍不奏效,请考虑使用多台服务器进行分布式查询。 上述指导原则建立的前提是:程序中用一条SQL语句或带参数存储过程来向数据库请求符合条件的数据。当然,用存储过程回快一些。一般情况下,如果在程序中获得了条件,然后向数据库查询符合该条件的记录,那么请尽量使用“正过滤”,即尽量不要在SQL语句中使用NOT,也可以在一定程度上加快执行速度。并且在指定的搜索条件中包含对主键字段的搜索也能提高速度。SQL语句的优化可以在一定程度上进行,但是速度的关键还是在于SQL的运行效率上。磁盘IO是最大的瓶颈。 这当然是可以的,服务器端游标或者服务器端分页以及其他一些客户端方法都可以实现对数据的分页,不过这些技术都是以资源为代价的,要保持连接并且会消耗服务器端的内存。如果,返回的几十万数据都是你需要的,并且这些数据你只需要先读出来(当然不排除都读出来之后再修改或者删除之类的),可以用DataReader一边读一边显示或者发给用户(多线程实现也可以),DataReader会占用活动连接,但是是.NET里面最轻量级和最快的数据读取类,可以在一定程序上解决你的问题。 上面的说法对于Windows程序适用。对于ASP.NET程序,需要其他方法。 还有,经测试超大数据量的话oracle比sqlserver查询快一些。 用ASP呢?能实现吗?偶记得ASP没有多线程\还有读出的数据只用来浏览!还有楼上的说了“游标”但是在实际当中我发现,程序是一下把检索到的数据全部读取到本地然后才进行分页的。这样的结果是第一次打开网页速度慢~ SQL应该不支持上亿条的记录吧! 不知道大家注意到没有?用access的时候,当一个表中的记录超过10W条以后,我们打开时,接那个滚动条,不能一下字拉到低~它好像一次只给我们看一部分,~然后在读取一些~不知道这是什么技术~ 用ASP实现就不用多线程了。在你的循环中每读取一行或者一定行数量的数据后,就立即用Response.Flush()把html输送给浏览器,这样浏览器就能一部分一部分的显示你取出来的数据,而不用等到整个循环都结束了。 问一个验证控件还有一个诡异的问题,不涉及代码,求助有经验的高手!!! 帮帮忙 JQuery 帮忙看看,谢谢 求开心网 原理 或相关资料 有关XSLT的简单问题 sql相关 DataGrid导出到Excel, 如何设置每列的数据类型呢? .net中如何判断Session已过期? asp.net 利用反射 动态比较两个model的值 一个小问题,变量的赋值? 第一次用Repeater,在前台就出错了.请大家帮忙看看.. 关于DataGrid绑定数据源后再绑定里面的控件的高难问题!!!
1。是否建了了恰当的索引?如果没有,请建立适当的索引。至于什么样的索引能称为“适当”,请参考SQL Server BOL。
2。如果有恰当的索引,那么是否索引的碎片过多?如果过多,请用DBCC工具整理。
3。如果索引碎片很低,那么可以考虑将数据文件和主索引方在一个文件组中,其他索引方在另一个文件组中。将两个文件组分布在不同的IDE通道或者不同的SCSI硬盘上,以便SQL Server能够利用多线程并行读取数据。
4。如果3仍不奏效,可以考虑使用RAID进一步提高磁盘IO,并适当增大内存以减少磁盘交换。
5。如果4仍不奏效,请考虑使用多台服务器进行分布式查询。
程序中用一条SQL语句或带参数存储过程来向数据库请求符合条件的数据。当然,用存储过程回快一些。
一般情况下,如果在程序中获得了条件,然后向数据库查询符合该条件的记录,那么请尽量使用“正过滤”,即尽量不要在SQL语句中使用NOT,也可以在一定程度上加快执行速度。并且在指定的搜索条件中包含对主键字段的搜索也能提高速度。
SQL语句的优化可以在一定程度上进行,但是速度的关键还是在于SQL的运行效率上。磁盘IO是最大的瓶颈。
如果,返回的几十万数据都是你需要的,并且这些数据你只需要先读出来(当然不排除都读出来之后再修改或者删除之类的),可以用DataReader一边读一边显示或者发给用户(多线程实现也可以),DataReader会占用活动连接,但是是.NET里面最轻量级和最快的数据读取类,可以在一定程序上解决你的问题。
对于ASP.NET程序,需要其他方法。
还有楼上的说了“游标”但是在实际当中我发现,程序是一下把检索到的数据全部读取到本地然后才进行分页的。这样的结果是第一次打开网页速度慢~
用access的时候,当一个表中的记录超过10W条以后,我们打开时,接那个滚动条,不能一下字拉到低~它好像一次只给我们看一部分,~然后在读取一些~不知道这是什么技术~