婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > sqlserver2005利用臨時表和@@RowCount提高分頁查詢存儲過程性能示例分享

sqlserver2005利用臨時表和@@RowCount提高分頁查詢存儲過程性能示例分享

熱門標簽:海南自動外呼系統價格 松原導航地圖標注 九鹿林外呼系統怎么收費 滄州營銷外呼系統軟件 沈陽智能外呼系統代理 創業電銷機器人 浙江地圖標注 電銷機器人虛擬號碼 舞鋼市地圖標注app

最近發現現有框架的通用查詢存儲過程的性能慢,于是仔細研究了下代碼:

復制代碼 代碼如下:

Alter PROCEDURE [dbo].[AreaSelect]
    @PageSize int=0,
    @CurrentPage int=1,
    @Identifier int=NULL,
    @ParentId int=NULL,
    @AreaLevel int=NULL,
    @Children int=NULL,
    @AreaName nvarchar(50)=NULL,
    @Path nvarchar(MAX)=NULL,
    @Status int=NULL,
    @Alt int=NULL
AS
BEGIN
    SET NOCOUNT ON;
    IF (NOT @AreaName IS NULL)    SET @AreaName='%'+@AreaName+'%'
    IF (NOT @Path IS NULL)    SET @Path='%'+@Path+'%'
    IF (@PageSize>0)
    BEGIN
        DECLARE @TotalPage int
        Select @TotalPage=Count(Identifier) FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
        IF(@TotalPage%@PageSize=0)
        BEGIN
            SET @TotalPage=@TotalPage/@PageSize
        END
        ELSE
        BEGIN
            SET @TotalPage=Round(@TotalPage/@PageSize,0)+1
        END
        Select TOP (@PageSize) Identifier,ParentId,AreaLevel,Children,AreaName,Path,Status,Alt,@TotalPage as totalPage FROM Area Where
        Identifier NOT IN (Select Top (@PageSize*(@CurrentPage-1))Identifier FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
            order by AreaName asc)
        AND
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
            order by AreaName asc
    END
    ELSE
    BEGIN
        Select Identifier,ParentId,AreaLevel,Children,AreaName,Path,Status,Alt FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
            order by AreaName asc
    END
END

發現每次查詢都需要按條件查詢依次Area表,性能太低,于是利用臨時表將符合條件的記錄取出來,然后針對臨時表進行查詢,代碼修改如下:
Alter PROCEDURE [dbo].[AreaSelect]
    @PageSize int=0,
    @CurrentPage int=1,
    @Identifier int=NULL,
    @ParentId int=NULL,
    @AreaLevel int=NULL,
    @Children int=NULL,
    @AreaName nvarchar(50)=NULL,
    @Path nvarchar(MAX)=NULL,
    @Status int=NULL,
    @Alt int=NULL
AS
BEGIN
    SET NOCOUNT ON;
    IF (NOT @AreaName IS NULL)    SET @AreaName='%'+@AreaName+'%'
    IF (NOT @Path IS NULL)    SET @Path='%'+@Path+'%'

   
    IF (@PageSize>0)
    BEGIN
        --創建臨時表
        Select
        Identifier,ParentId,AreaLevel,Children,AreaName,Path,Status,Alt
        INTO #temp_Area
        FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
        order by AreaName asc

        DECLARE @TotalPage int
        DECLARE @SumCount int

        --取總數
        Select @SumCount=Count(Identifier) FROM #temp_Area

        IF(@SumCount%@PageSize=0)
        BEGIN
            SET @TotalPage=@SumCount/@PageSize
        END
        ELSE
        BEGIN
            SET @TotalPage=Round(@SumCount/@PageSize,0)+1
        END
        Select TOP (@PageSize) Identifier,ParentId,AreaLevel,Children,AreaName,
        Path,Status,Alt,@TotalPage as totalPage,@SumCount as SumCount
        FROM #temp_Area
        Where
        Identifier NOT IN (Select Top (@PageSize*(@CurrentPage-1))Identifier FROM #temp_Area))
    END
    ELSE
    BEGIN
        Select Identifier,ParentId,AreaLevel,Children,AreaName,Path,Status,Alt FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
            order by AreaName asc
    END
END

經過使用臨時表的確提高性能,不過有發現一個問題,就是count(Identifier)的確很耗性能,于是又進行修改了

Alter PROCEDURE [dbo].[AreaSelect]
    @PageSize int=0,
    @CurrentPage int=1,
    @Identifier int=NULL,
    @ParentId int=NULL,
    @AreaLevel int=NULL,
    @Children int=NULL,
    @AreaName nvarchar(50)=NULL,
    @Path nvarchar(MAX)=NULL,
    @Status int=NULL,
    @Alt int=NULL
AS
BEGIN
    SET NOCOUNT ON;
    IF (NOT @AreaName IS NULL)    SET @AreaName='%'+@AreaName+'%'
    IF (NOT @Path IS NULL)    SET @Path='%'+@Path+'%'

   
    IF (@PageSize>0)
    BEGIN
        --創建中記錄數
        DECLARE @SumCount int

        --創建臨時表
        Select
        Identifier,ParentId,AreaLevel,Children,AreaName,Path,Status,Alt
        INTO #temp_Area
        FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
        order by AreaName asc
        --設置總記錄數為剛操作的記錄數
        SET @SumCount=@@RowCount

        DECLARE @TotalPage int

        IF(@SumCount%@PageSize=0)
        BEGIN
            SET @TotalPage=@SumCount/@PageSize
        END
        ELSE
        BEGIN
            SET @TotalPage=Round(@SumCount/@PageSize,0)+1
        END
        Select TOP (@PageSize) Identifier,ParentId,AreaLevel,Children,AreaName,
        Path,Status,Alt,@TotalPage as totalPage,@SumCount as SumCount
        FROM #temp_Area
        Where
        Identifier NOT IN (Select Top (@PageSize*(@CurrentPage-1))Identifier FROM #temp_Area))
    END
    ELSE
    BEGIN

        Select Identifier,ParentId,AreaLevel,Children,AreaName,Path,Status,Alt FROM Area Where
        (@Identifier IS NULL or Identifier=@Identifier)AND
        (@ParentId IS NULL or ParentId=@ParentId)AND
        (@AreaLevel IS NULL or AreaLevel=@AreaLevel)AND
        (@Children IS NULL or Children=@Children)AND
        (@AreaName IS NULL or AreaName Like @AreaName)AND
        (@Path IS NULL or Path Like @Path)AND
        (@Status IS NULL or Status=@Status)AND
        (@Alt IS NULL or Alt=@Alt)
        order by AreaName asc
    END
END

您可能感興趣的文章:
  • sql server2008調試存儲過程的完整步驟
  • SQLServer2008存儲過程實現數據插入與更新
  • Sql Server 存儲過程調用存儲過程接收輸出參數返回值
  • SQLServer存儲過程創建和修改的實現代碼
  • 獲取SqlServer存儲過程定義的三種方法
  • SqlServer存儲過程實現及拼接sql的注意點
  • 淺析SQL Server的嵌套存儲過程中使用同名的臨時表怪像

標簽:寶雞 咸寧 商洛 海口 臺灣 西藏 日喀則 公主嶺

巨人網絡通訊聲明:本文標題《sqlserver2005利用臨時表和@@RowCount提高分頁查詢存儲過程性能示例分享》,本文關鍵詞  sqlserver2005,利用,臨時,表,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sqlserver2005利用臨時表和@@RowCount提高分頁查詢存儲過程性能示例分享》相關的同類信息!
  • 本頁收集關于sqlserver2005利用臨時表和@@RowCount提高分頁查詢存儲過程性能示例分享的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    中日韩免费视频中文字幕| 亚洲天堂福利av| 激情综合亚洲精品| 奇米色777欧美一区二区| 午夜电影一区二区三区| 亚洲电影一区二区三区| 偷窥国产亚洲免费视频| 亚洲 欧美综合在线网络| 天天色天天操综合| 日本亚洲天堂网| 久久99国产精品免费网站| 免费不卡在线观看| 国产成人一级电影| av不卡在线播放| 99精品欧美一区二区三区综合在线| 国产成人aaa| 91久久精品一区二区三区| 国产91丝袜在线播放九色| av一二三不卡影片| 在线观看亚洲精品| 欧美日韩精品欧美日韩精品| 在线看国产一区二区| 日韩在线播放一区二区| 久久成人av少妇免费| 成人免费va视频| 欧美日韩亚洲不卡| 欧美zozo另类异族| 国产精品沙发午睡系列990531| 亚洲三级小视频| 日本美女一区二区三区视频| 精品影视av免费| 99久久婷婷国产| 91精品欧美久久久久久动漫| 欧美极品aⅴ影院| 亚洲欧美电影院| 午夜影院在线观看欧美| 国产精品一区免费在线观看| 在线免费不卡电影| 中文字幕欧美激情一区| 香蕉影视欧美成人| 国产成人亚洲综合a∨猫咪| 欧美色精品在线视频| 日韩片之四级片| 久久精品视频在线看| 欧美国产精品一区二区| 日本一不卡视频| 色婷婷久久久综合中文字幕| 精品国产凹凸成av人网站| 亚洲人快播电影网| 国产精品资源网站| 日韩一区二区三区视频| 亚洲精品高清在线| 精品一区二区在线视频| 在线观看av一区| 亚洲国产成人午夜在线一区| 奇米色777欧美一区二区| 欧美午夜理伦三级在线观看| 欧美一区二区三区色| 亚洲精品久久久久久国产精华液| 国产精品亚洲人在线观看| 久久久美女毛片| 日本高清不卡一区| 国产精品久久久久7777按摩| 蜜臀av性久久久久蜜臀aⅴ | 波多野结衣亚洲一区| 精品国产伦理网| 免费在线看成人av| 欧美视频中文字幕| 偷拍日韩校园综合在线| 成人午夜视频福利| 国产精品毛片高清在线完整版| 蜜臀av亚洲一区中文字幕| 91精品国产综合久久久久久久久久| 中文字幕中文字幕在线一区 | 成人精品免费网站| 欧美一区二区三区四区高清| 丝袜美腿亚洲综合| 欧美丰满一区二区免费视频 | 日本欧美一区二区三区乱码| 色婷婷亚洲综合| 成人免费一区二区三区在线观看 | 一区二区三区在线视频免费 | 久久久天堂av| 国产91丝袜在线观看| 亚洲欧洲日韩女同| 91国产丝袜在线播放| 日韩精品三区四区| 欧美成人精品福利| 国产一区二区不卡| 中文字幕一区二区三区av| 极品美女销魂一区二区三区| 成人激情免费电影网址| 亚洲老妇xxxxxx| 欧美喷潮久久久xxxxx| 男男gaygay亚洲| 国产欧美日韩亚州综合 | 日本一区二区三区国色天香 | 在线观看成人小视频| 日本成人中文字幕在线视频 | 日本不卡1234视频| 日韩亚洲欧美在线观看| 国产91丝袜在线播放| 亚洲一区免费在线观看| 日韩亚洲欧美一区二区三区| 成人涩涩免费视频| 三级在线观看一区二区| 亚洲国产岛国毛片在线| 678五月天丁香亚洲综合网| 福利一区二区在线| 一区二区三区在线影院| 久久久久久久久岛国免费| 欧美在线你懂得| 久久成人麻豆午夜电影| 一级中文字幕一区二区| 久久久综合网站| jiyouzz国产精品久久| 爽好多水快深点欧美视频| 久久色视频免费观看| 在线观看av一区| 成人免费毛片片v| 黄一区二区三区| 亚洲成a人在线观看| 亚洲国产岛国毛片在线| 欧美精选在线播放| 亚洲欧美电影一区二区| 久久久综合九色合综国产精品| 欧美日韩在线直播| 成人av电影免费观看| 欧美aaa在线| 午夜精彩视频在线观看不卡| 国产精品日产欧美久久久久| 欧美大度的电影原声| 欧美精品一级二级三级| 欧美亚洲国产一区二区三区va| 成人精品在线视频观看| 久久国产精品色| 日韩精品每日更新| 亚洲国产综合色| 亚洲猫色日本管| 亚洲免费观看视频| ...中文天堂在线一区| 中文字幕永久在线不卡| 日本一区二区成人| 国产精品毛片a∨一区二区三区| www久久精品| 久久久精品综合| 久久理论电影网| 国产欧美一区二区精品婷婷| 国产区在线观看成人精品| 国产日韩欧美亚洲| 国产精品麻豆久久久| 中文字幕不卡一区| 亚洲视频网在线直播| 亚洲天堂精品视频| 亚洲福利视频三区| 免费成人av在线| 国产成人精品免费一区二区| 国产精品资源在线| 91丨porny丨中文| 色狠狠色狠狠综合| 色香蕉成人二区免费| 色婷婷综合激情| 91精品国产综合久久福利| 欧美乱妇23p| 欧美一级片在线观看| 精品人伦一区二区色婷婷| 国产嫩草影院久久久久| 国产精品久久久久一区二区三区 | 日韩视频在线你懂得| 欧美一级生活片| 日韩欧美一区电影| 国产精品久久久99| 一区二区三区精品视频| 三级久久三级久久久| 国产美女精品在线| av亚洲精华国产精华精华| 欧美性高清videossexo| 精品少妇一区二区三区在线播放 | 国产东北露脸精品视频| 99r精品视频| 欧美人伦禁忌dvd放荡欲情| 亚洲精品在线电影| 一区二区三区在线观看动漫| 日本一不卡视频| 一本到不卡精品视频在线观看| 欧美日韩精品福利| 国产拍揄自揄精品视频麻豆| 亚洲精品中文字幕乱码三区| 日韩1区2区3区| 99视频在线精品| 日韩欧美国产小视频| 亚洲精品国产高清久久伦理二区| 夜夜爽夜夜爽精品视频| 国产精品白丝av| 欧美久久一区二区| 国产精品情趣视频| 久久精品国产久精国产爱| 在线一区二区三区四区| 久久久影视传媒| 欧美aaaaaa午夜精品|