24h購物| | PChome| 登入
2010-07-28 07:47:42| 人氣2,658| 回應4 | 上一篇 | 下一篇

php 存取 mssql 分頁

推薦 2 收藏 0 轉貼0 訂閱站台

使用 php 存取 mssql 的人多少會有碰到分頁的麻煩, 在 mssql 的語法裡只有 top 可以決定要取回前幾筆資料, 例如
select top 10 * from table1.
這種做法在要取回第 10~20 筆的時候就會遇到麻煩, 以前的笨方法是使用
select top 20 * from table1
然後在 php 裡先濾掉前 10 筆後再開始輸出, 然而在將資料取回來的同時記憶體就悄悄被使用掉了 (如果是要取回 10000 ~ 10010 不就要多浪費一萬筆的記憶體空間??)

一直在想為什麼 mssql 不提供類似 mysql 語法裡面的 limit 功能, 就像是
select * from table1 limit 10000,10
簡單明瞭不是很好嗎? 在情非得已一定得從 mssql 裡取出不得不做分頁的大量資料為前題之下, 勉強找了一個可以湊合著用的方法
select top 10 * from table1 where id not in (select top 10000 id from table1 order by id asc) order by id asc
使用這種做法 id 必需要是唯一值, 暫時解決了遇到的困擾.

如果你(妳)有更好的解決方法的話, 也請不吝提供參考.


※附上 msdn 上的說明:http://msdn.microsoft.com/en-us/library/ms979197

台長: Mr. Blue
人氣(2,658) | 回應(4)| 推薦 (2)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 程式設計 |

正樹
哇,好久不見啦,阿布
差一點忘了要來拜訪你囉
真的是有點健忘啦@_@
要記得常來看阿樹啊
我也會記得常來看你的
吃飯了嗎?
2010-08-04 12:56:28
版主回應
hi 正樹~
最近事情比較多所以上 blog 的時間就少嚕~
2010-08-05 08:29:24
正樹
再忙也別忘了要好好照顧自己啊
看到你這篇我真是覺得好厲害呢
你是網頁工程師嗎?
等你有空我又有問題時可以向你請教嗎?
2010-08-05 08:54:16
版主回應
我只是寫寫小程式騙口飯吃的打雜人員而已 :)
有問題可以問我丫~
但是不一定能夠馬上回答就是了 ^^
2010-08-05 08:56:06
流浪玩家
有沒有試過使用 mssql_data_seek 啊?
2010-09-13 18:11:51
版主回應
嗯, 但是撈出來的資料太大蠻耗效能的
2010-09-16 07:48:57
流浪玩家
剛才查了一下,
有看到使用 ROW_NUMBER or ROWCOUNT 的作法 ~~~
2010-09-14 16:55:29
版主回應
第一種是要透過 store procedure
第二種則是會產生 temp_db
效能方面倒是還沒有做過實驗 :)
再找時間來試試
感謝你的熱心喔~
2010-09-16 07:50:04
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文