ASP分页优化之SQL

石头 发布于2010-5-3 16:35:50 分类: 小技巧 已浏览219 网友评论13条 我要评论

    作为网站的开发者,在开发网的过程中,不仅要考虑程序的逻辑性和结构性,更重要的一个方面是要对自己的和程序的效率和执行时间了如指掌。最近因为需要写了一个数据列表的类,做了设定分页数和SQL的接口,但是分页的时候我就犹豫了,还是采用传统的Rs.CurrentPage来定位页码和数据起始端?如果数据量超过了10万条,那岂不是也要把所有的数据都提取出来?所以在思想以后,石头决定采用TOP的方式来提取指定条数的记录,就算数据量超过100万条,执行速度也会相当的快。看下面的函数:

 Private Function ChangeSQLForList() 
  Return = Replace(Ucase(SQL),"SELECT","SELECT TOP "&PageSizes)
  Table_1 = split(Ucase(SQL),"FROM")
  Table_2 = split(Table_1(1)," ")
  Table = Table_2(1)
  if Instr(Return,"WHERE")>0 Then
    Return = Replace(Return,"WHERE","WHERE ("&Table&".ID NOT IN(SELECT TOP "&PageSizes*(CurrentPage-1)&" "&Table&".ID FROM "&getBySplitM(Ucase(SQL),"FROM","ORDER BY")&" ORDER BY "&getBySplit(Ucase(SQL),"ORDER BY",2)&")) AND")
   else
    Return = Replace(Return,"ORDER BY","WHERE ("&Table&".ID NOT IN(SELECT TOP "&PageSizes*(CurrentPage-1)&" "&Table&".ID FROM "&getBySplitM(Ucase(SQL),"FROM","ORDER BY")&" ORDER BY "&getBySplit(Ucase(SQL),"ORDER BY",2)&"))" &" ORDER BY")
  End if
  
  ChangeSQLForList = Return
 
 End Function

    这个函数是用于转换接口处的SQL来查询设定的条数的记录,它的原理在于,取得上一页最后一条记录的ID,然后再采用SELECT TOP的方式来查询记录,在WHERE后面设定了ID大于上一页的最后一个ID。

已经有(13)位网友发表了评论,你也评一评吧!

原创文章转载请注明引自石头博客 http://www.stou.info/ 欢迎订阅石头博客

猜你也喜欢

关于 asp SQL 的相关文章

  1. 发表于2010-05-08 11:18:48

    路过`````````赞个````````````走人```````````

  2. 发表于2010-05-07 17:51:35

    看不懂的我 路过一下吧 我在慢慢学习

    stone 于 2010-5-8 19:12:02 回复

  3. 发表于2010-05-07 11:10:59

    很专业,看不懂,呵呵。

  4. 发表于2010-05-06 20:18:54

    牛仔过来坐坐

  5. 发表于2010-05-05 10:57:07

    赞个`````

  6. 发表于2010-05-05 09:48:05

    石头,你VB写的不错啊:)
    偶不会这个,但能看懂,呵呵
    现在在学as3

  7. 发表于2010-05-04 19:22:10

    还有这么一说? 记下了...

  8. 发表于2010-05-04 15:28:23

    这个代码十分眼熟~~ 好像是我发布的哦

  9. 发表于2010-05-04 10:56:20

    一点都看不懂哦

  10. 发表于2010-05-03 21:30:08

    看不懂,顺便说一下,有一个广告留言?

    stone 于 2010-5-4 9:19:48 回复
    恩,恩

  11. 发表于2010-05-03 20:03:40

    以前用asp+access时候数据不大,没有用过这个,不过现在看起来,这个分页方案的前提是ID,但也有些没有自动编号的数据,就不适应了吧。

    stone 于 2010-5-4 9:21:05 回复
    你的说法提醒了我,如果没有可以数字排序的字段的话这个文字还真不行了

  12. 发表于2010-05-03 19:01:38

    谢谢了。

    stone 于 2010-5-4 9:21:29 回复
    嘿嘿,常来哈

  13. 发表于2010-05-03 17:06:32

    赞个```.................

称呼:

邮件:

网站:

验证:

记住我的信息,下次不用再输入小诀窍:按ctrl+y键可以启动搜狗云输入法