ホームページ  >  記事  >  バックエンド開発  >  素晴らしくほぼ完璧なページング ストアド プロシージャ_PHP チュートリアル

素晴らしくほぼ完璧なページング ストアド プロシージャ_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:00:25938ブラウズ

CREATE プロシージャ main_table_pwqzc
(@pagesize int,
@pageindex int,
@docount bit,
@this_id)
as
if(@docount=1)
begin
select count(id) from luntan where this_id=@this_id
end
else
begin
declare @indextable table(id intidentity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound =@PageLowerBound @pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select id from luntan where this_id=@this_id order by Reply_time desc
select a.* from luntan a,@indextable t where a.id=t. nid
と t.id>@PageLowerBound および t.id<=@PageUpperBound は t.id
end
GO
で並べ替えられます。ストアド プロシージャは、渡されたパラメーター @docount に基づいて、ページングされるレコードの合計数を返すかどうかを決定します。 in
特にこの2行
set rowcount @PageUpperBound
insert into @indextable(nid) select id from luntan where this_id=@this_id order by Reply_time desc
レコード数が@PageUpperBoundに達したときのset rowcount @PageUpperBoundは本当に素晴らしいです!!クエリの処理を停止します
、select id は id 列のみを取り出して一時テーブルに置きます、select a.* from luntan a,@indextable t where a.id=t.nid
and t.id>@PageLowerBoundそして、 t .id<=@PageUpperBound order by t.id
そして、この文は、すべてのレコードを結合するのではなく、テーブルから必要なレコードのみを取り出すことで、効率が大幅に向上します!!
素晴らしい、本当に素晴らしい!!!!
CREATE PROCEDURE Paging_RowCount
(
@Tables varchar(1000),
@PK varchar(100),
@Sort varchar(200) = NULL,
@PageNumber int = 1,
@PageSize int = 10,
@Fields varchar (1000) = '*',
@Filter varchar(1000) = NULL,
@Group varchar(1000) = NULL)
AS
/*デフォルトの並べ替え*/
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PK
/*@PK タイプを検索*/
DECLARE @SortTable varchar(100)
DECLARE @SortName varchar(100)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/631236.html技術記事 CREATE プロシージャ main_table_pwqzc (@pagesize int, @pageindex int, @docount bit, @this_id) as if(@docount=1) begin select count(id) from luntan where this_id=@this_id end else begin...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。