sql 存儲(chǔ)過程分頁代碼 支持億萬龐大數(shù)據(jù)量
更新時(shí)間:2011年09月21日 22:08:48 作者:
sql 存儲(chǔ)過程分頁代碼 支持億萬龐大數(shù)據(jù)量,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
CREATE PROCEDURE page
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='id', -- 排序的字段名
@PageSize int = 10, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@doCount bit = 0, -- 返回記錄總數(shù), 非 0 值則返回
@OrderType bit = 0, -- 設(shè)置排序類型, 非 0 值則降序 0:asc 1:desc
@strWhere varchar(1500) = '', -- 查詢條件 (注意: 不要加 where)
@ID nvarchar(50)='id' --主表的列。。最好是主鍵
AS
declare @strSQL varchar(5000) -- 主語句
declare @strTmp varchar(110) -- 臨時(shí)變量
declare @strOrder varchar(400) -- 排序類
if @doCount != 0 begin
if @strWhere !=''
set @strSQL = 'select count(*) as Total from ' + @tblName+ ' where '+@strWhere
else
set @strSQL = 'select count(*) as Total from ' + @tblName + ''
end
--以上代碼的意思是如果@doCount傳遞過來的不是0,就執(zhí)行總數(shù)統(tǒng)計(jì)。以下的所有代碼都是@doCount為0的情況
else begin
if @OrderType != 0 begin
set @strTmp = '<(select min'
set @strOrder = ' order by ' + @fldName +' desc'
--如果@OrderType不是0,就執(zhí)行降序,這句很重要!
end
else begin
set @strTmp = '>(select max'
set @strOrder = ' order by ' + @fldName +' asc'
end
if @PageIndex = 1 begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ' + @tblName + ' where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '+ @tblName + ' '+ @strOrder
--如果是第一頁就執(zhí)行以上代碼,這樣會(huì)加快執(zhí)行速度
end
else begin
--以下代碼賦予了@strSQL以真正執(zhí)行的SQL代碼
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where ' + @fldName + ' ' + @strTmp + '( '+ @ID + ' ) from (select top ' + str((@PageIndex-1)*@PageSize) + ' '+ @fldName + ' from ' + @tblName + @strOrder + ') as tblTmp)'+ @strOrder
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from '
+ @tblName + ' where ' + @fldName + ' ' + @strTmp + '('
+ @ID + ') from (select top ' + str((@PageIndex-1)*@PageSize) + ' '
+ @fldName + ' from ' + @tblName + ' where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
end
end
exec (@strSQL)
您可能感興趣的文章:
- 大數(shù)據(jù)量時(shí)提高分頁的效率
- 數(shù)據(jù)庫高并發(fā)情況下重復(fù)值寫入的避免 字段組合約束
- 大數(shù)據(jù)量分頁存儲(chǔ)過程效率測試附測試代碼與結(jié)果
- 大數(shù)據(jù)量,海量數(shù)據(jù)處理方法總結(jié)
- MySQL數(shù)據(jù)庫優(yōu)化經(jīng)驗(yàn)詳談(服務(wù)器普通配置)
- MySQL數(shù)據(jù)庫十大優(yōu)化技巧
- SQL Server數(shù)據(jù)庫的高性能優(yōu)化經(jīng)驗(yàn)總結(jié)
- 數(shù)據(jù)庫性能優(yōu)化三:程序操作優(yōu)化提升性能
- 數(shù)據(jù)庫性能優(yōu)化二:數(shù)據(jù)庫表優(yōu)化提升性能
- 數(shù)據(jù)庫性能優(yōu)化一:數(shù)據(jù)庫自身優(yōu)化提升性能
- Oracle 數(shù)據(jù)庫優(yōu)化實(shí)戰(zhàn)心得總結(jié)
- 優(yōu)化mysql數(shù)據(jù)庫的經(jīng)驗(yàn)總結(jié)
- mysql數(shù)據(jù)庫優(yōu)化總結(jié)(心得)
- 關(guān)于數(shù)據(jù)庫優(yōu)化問題收集匯總
- oracle數(shù)據(jù)庫sql的優(yōu)化總結(jié)
- sql 百萬級(jí)數(shù)據(jù)庫優(yōu)化方案分享
- 優(yōu)化Mysql數(shù)據(jù)庫的8個(gè)方法
- mysql數(shù)據(jù)庫sql優(yōu)化原則(經(jīng)驗(yàn)總結(jié))
- 針對Sqlserver大數(shù)據(jù)量插入速度慢或丟失數(shù)據(jù)的解決方法
- MySQL數(shù)據(jù)庫優(yōu)化詳解
- MySQL中實(shí)現(xiàn)高性能高并發(fā)計(jì)數(shù)器方案(例如文章點(diǎn)擊數(shù))
- 超大數(shù)據(jù)量存儲(chǔ)常用數(shù)據(jù)庫分表分庫算法總結(jié)
- sqlserver數(shù)據(jù)庫優(yōu)化解析(圖文剖析)
- 詳解MySQL性能優(yōu)化(一)
- 詳解MySQL性能優(yōu)化(二)
- 19個(gè)MySQL性能優(yōu)化要點(diǎn)解析
- 大數(shù)據(jù)量高并發(fā)的數(shù)據(jù)庫優(yōu)化詳解
相關(guān)文章
SQL Server 2008 正式版安裝指南 包含序列號(hào)
和Visual Studio 2008一樣,從官網(wǎng)下載SQL Server 2008的180天試用版其實(shí)與正式版內(nèi)容是基本相同的,唯一的區(qū)別就在于安裝配置文件中所包含的key。各種版本的SQL Server是完全一樣的。2009-02-02
sql server 2000數(shù)據(jù)庫備份還原的圖文教程
MSSQL是微軟公司的一款數(shù)據(jù)庫管理系統(tǒng),本文將詳細(xì)介紹MSSQL2000中數(shù)據(jù)庫的備份和還原功能,需要的朋友可以參考下2014-08-08
SQLServer 表值構(gòu)造函數(shù)(Transact-SQL)的使用
表值構(gòu)造函數(shù)是一種用于在單個(gè)語句中插入多行數(shù)據(jù)到表中的語法,本文主要介紹了SQLServer 表值構(gòu)造函數(shù)(Transact-SQL)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
sqlserver中創(chuàng)建鏈接服務(wù)器圖解教程
鏈接服務(wù)器在跨數(shù)據(jù)庫/跨服務(wù)器查詢時(shí)非常有用(比如分布式數(shù)據(jù)庫系統(tǒng)中),本文將以圖文方式詳細(xì)說明如何利用SQL Server Management Studio在圖形界面下創(chuàng)建鏈接服務(wù)器。2010-09-09
大容量csv快速內(nèi)導(dǎo)入sqlserver的解決方法(推薦)
最近遇到這樣的問題:導(dǎo)入csv 數(shù)據(jù),并對導(dǎo)入的數(shù)據(jù)增加一個(gè)新的列date datetime,下面通過本文給大家分享大容量csv快速內(nèi)導(dǎo)入sqlserver的解決方法,感興趣的朋友一起看看吧2017-07-07

