成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

實現(xiàn)千萬級數(shù)據(jù)分頁的存儲過程

2010-08-28 10:49:35來源:西部e網(wǎng)作者:

經(jīng)測試,在 14483461 條記錄中查詢第 100000 頁,每頁 10 條記錄按升序和降序第一次時間均為 0.47 秒,第二次時間均為 0.43 秒,測試語法如下:
 exec GetRecordFromPage news,newsid,10,100000
 news 為 表名, newsid 為關鍵字段, 使用時請先對 newsid 建立索引。
*/

/*
 函數(shù)名稱: GetRecordFromPage
 函數(shù)功能: 獲取指定頁的數(shù)據(jù)
 參數(shù)說明: @tblName   包含數(shù)據(jù)的表名
      @fldName   關鍵字段名
      @PageSize   每頁記錄數(shù)
      @PageIndex  要獲取的頁碼
      @OrderType  排序類型, 0 - 升序, 1 - 降序
      @strWhere   查詢條件 (注意: 不要加 where)
 作  者: 鐵拳
 郵  箱: sunjianhua_kki@sina.com
 創(chuàng)建時間: 2004-07-04
 修改時間: 2004-07-04
*/
CREATE PROCEDURE GetRecordFromPage
  @tblName   varchar(255),    -- 表名
  @fldName   varchar(255),    -- 字段名
  @PageSize   int = 10,      -- 頁尺寸
  @PageIndex  int = 1,      -- 頁碼
  @OrderType  bit = 0,      -- 設置排序類型, 非 0 值則降序
  @strWhere   varchar(2000) = "" -- 查詢條件 (注意: 不要加 where)
AS

declare @strSQL  varchar(6000)    -- 主語句
declare @strTmp  varchar(1000)    -- 臨時變量
declare @strOrder varchar(500)    -- 排序類型

if @OrderType != 0
begin
  set @strTmp = "<(select min"
  set @strOrder = " order by [" + @fldName + "] desc"
end
else
begin
  set @strTmp = ">(select max"
  set @strOrder = " order by [" + @fldName +"] asc"
end

set @strSQL = "select top " + str(@PageSize) + " * from ["
  + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
  + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
  + @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"
  + @strOrder

if @strWhere != ""
  set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
    + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
    + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
    + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

if @PageIndex = 1
begin
  set @strTmp = ""
  if @strWhere != ""
    set @strTmp = " where (" + @strWhere + ")"

  set @strSQL = "select top " + str(@PageSize) + " * from ["
    + @tblName + "]" + @strTmp + " " + @strOrder
end

exec (@strSQL)

GO

關鍵詞:存儲過程

贊助商鏈接:

主站蜘蛛池模板: 布尔津县| 霍山县| 安乡县| 兴安县| 平乡县| 读书| 郯城县| 英德市| 连城县| 深州市| 临清市| 察哈| 团风县| 蓝山县| 福建省| 临夏县| 故城县| 临安市| 胶南市| 电白县| 金阳县| 福贡县| 阿克陶县| 云南省| 宜州市| 称多县| 辰溪县| 元氏县| 林芝县| 泰宁县| 渭南市| 祁门县| 柞水县| 通河县| 龙门县| 灵宝市| 西昌市| 登封市| 宜黄县| 丹阳市| 朝阳市|