翻动100万级的数据 —— 只需几十毫秒 之揭秘篇:有详细的说明,不要错过。

自然框架 2005-08-02 08:09:31
http://community.csdn.net/Expert/TopicView3.asp?id=4180563
http://www.jyklzz.com/bbs/ 演示页面
感谢大家的支持!!!
昨天发了一个邀请,邀请大家帮忙测试,效果还可以,下面小结一下:

通过内部的计数器得知:访问次数是1071(其中有好多是自己点的:)),人数不是太理想,本来是想看看上万人同时访问的情况:)

系统资源的占用情况

内存 —— 很理想。SQL占用的内存最大也没有超过65M,一般是在35M左右;asp.net占用的内存最大也没有超过40M,一般是在25M左右。

CPU:8%左右,由于访问次数不多,也不够集中,所以这个数值也说明不了什么。自己连续点了n次下一页,发现CPU的使用率飘高,达到了50%左右。
但是对于100万的记录,AMD XP2000+ 的CPU 几十毫秒的放映速度,因该是可以接受的,甚至是很理想的吧。
毕竟服务器的CPU要比我的快很多吧,而且记录也很难达到100万吧。

结果还是很满意的,但是美中不足的是,我想看一下海量访问的情况下的效果,
希望大家再支持一下,多点几下,谢谢了。呵呵

另外说明一下:前n页可以在60毫秒内完成,n应该是大于500的,小于多少嘛还没有测试。后n页就比较慢了,需要500毫秒左右。

下面讨论一下翻页的技巧吧。
我没有用游标、临时表、not in、in 这些方法,并不是说他们的效率不高,而是我还没有测试过。我只用了 top ,查了两次表。
大家也可提供一些其他的方法,我来测试一下,看看在100万条的情况下的效果。(请不要给在存储过程里面组串的,看着实在是太费劲了)
...全文
7185 154 打赏 收藏 转发到动态 举报
写回复
用AI写文章
154 条回复
切换为时间正序
请发表友善的回复…
发表回复
imsyq 2006-04-23
  • 打赏
  • 举报
回复
MARK
aafly 2006-03-03
  • 打赏
  • 举报
回复
mark
tigerhu76 2006-01-31
  • 打赏
  • 举报
回复
学习
jeedispeed 2006-01-27
  • 打赏
  • 举报
回复
mark
jxjjljf 2006-01-24
  • 打赏
  • 举报
回复
m
flashasp 2006-01-19
  • 打赏
  • 举报
回复
强贴啊!
bj20082005 2006-01-17
  • 打赏
  • 举报
回复
mark
自然框架 2005-11-07
  • 打赏
  • 举报
回复
是真的吗?
我要买一本看一看。:)
YuLimin 2005-11-01
  • 打赏
  • 举报
回复
不错吧,应当,此贴上了程序员2005.09HOT10之一哦:)
rootX 2005-09-17
  • 打赏
  • 举报
回复
to楼住:
这个方法其实动网(DVBBS)的SQL存储过程版本已经用了好多年了。。。不过效率的确是很高的
lostinwind 2005-09-17
  • 打赏
  • 举报
回复
另外,对于数据库的查询性能的提高,我可以提供一篇好帖子,比较详细
http://www.itpub.net/2773.html
lostinwind 2005-09-17
  • 打赏
  • 举报
回复
快速插入记录的一个要点就是表的索引越少越好
曾经看过一个文章,说FOXPRO插入记录的速度是最快的,为什么呢?
因为foxpro太简单了,没有什么管理单元,单纯的一个(文本)文件,而MSSQL等数据库就不同了,需要做一些外围的工作,比如用户认证,日志回写等。
记得上oracle认证的时候老师也告诉过我们,索引和更新数据的速度是对矛盾,因为数据库的记录发生变化了,必须维护相应的索引。
kenhit2 2005-09-12
  • 打赏
  • 举报
回复
mark
pmmx 2005-09-09
  • 打赏
  • 举报
回复
mark
pclogic 2005-09-09
  • 打赏
  • 举报
回复
mark
adandelion 2005-08-11
  • 打赏
  • 举报
回复
GZ
自然框架 2005-08-11
  • 打赏
  • 举报
回复
to:pupo(泡泡)

http://dev.csdn.net/article/43/43936.shtm

看了一下,讲得很详细,做了很多的测试,总体来说挺好。

但是,他并没有提到我的方法,虽然思路相同,但是写法且不一样。

另外,那篇文章里有一个明显的错误:

in 是可以利用所引的,or也是可以的

select * from table where ID in (2,3)
select * from table where ID =2 or ID = 3

像这样的语句,如果ID是主键(或者设置的索引),那么是可以利用索引的。

还有呢就是有一个明显的局限性 —— 单字段排序!

好像没有说明多字段排序要怎么处理。

pupo 2005-08-08
  • 打赏
  • 举报
回复
看了你的另外网址的说明,原来是我理解错了,我以为标记ID是直接通过计算得出来,原来也是通过类似top的方法计算出来的,楼主这种方法还是挺不错的!
wyheaven 2005-08-08
  • 打赏
  • 举报
回复
up
mybordy 2005-08-08
  • 打赏
  • 举报
回复
mark
加载更多回复(134)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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