李洪根关于[SQL]对于分页存储过程
1。我個(gè)人認(rèn)為最好的分頁(yè)方法是:
寫(xiě)成存儲(chǔ)過(guò)程,上面的語(yǔ)句要拼一下sql語(yǔ)句,要獲得最后大于的哪一個(gè)ID號(hào)
2。那個(gè)用游標(biāo)的方式,只適合于小數(shù)據(jù)量的表,如果表在一萬(wàn)行以上,就差勁了
你的存儲(chǔ)過(guò)程還比不上NOT IN分頁(yè),示例:
declare?@SQLStr?varchar(8000)
set?@SQLStr='SELECT?Top?'+cast(@每頁(yè)大小?as?varchar)+'?*?FROM?表?WHERE?主鍵列?NOT?IN?(SELECT?TOP?'+cast(@每頁(yè)大小*@第幾頁(yè)?as?varchar)+'?主鍵列?from?表?)'
exec(@SQLStr)
3。以下是我用存儲(chǔ)過(guò)程分頁(yè)的方式,分頁(yè)一個(gè)20萬(wàn)行的表,結(jié)果顯示在網(wǎng)頁(yè)中,你可以看一下速度:
http://www.bizlands.com/trade/search.asp?type=s&sortid=15
4。很久前,我說(shuō)過(guò)用sql的游標(biāo)
游標(biāo)是存放在內(nèi)存中,很費(fèi)內(nèi)存.
游標(biāo)一建立,就將相關(guān)的記錄鎖住,直到取消游標(biāo)
游標(biāo)提供了對(duì)特定集合中逐行掃描的手段,一般使用游標(biāo)來(lái)逐行遍歷數(shù)據(jù),根據(jù)取出數(shù)據(jù)條件的不同進(jìn)行不同的操作。而對(duì)于多表和大表中定義的游標(biāo)(大的數(shù)據(jù)集合)循環(huán)很容易使程序進(jìn)入一個(gè)漫長(zhǎng)的等待甚至死機(jī).
所以說(shuō),我個(gè)人的經(jīng)驗(yàn),就是一萬(wàn)上行上的表,不用游標(biāo).小數(shù)據(jù)量的表,適當(dāng)?shù)臅r(shí)候可以用游標(biāo)
因?yàn)橛螛?biāo),遍歷小數(shù)據(jù)量的行集還是不錯(cuò)的一個(gè)方法!
5。用臨時(shí)表自定義分頁(yè)和使用游標(biāo)自定義分頁(yè)都不好!
總結(jié)
以上是生活随笔為你收集整理的李洪根关于[SQL]对于分页存储过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DataGrid/DataList
- 下一篇: Asp.NET中常用的一些优化性能的方法