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

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

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

熱門標(biāo)簽:海南自動(dòng)外呼系統(tǒng)價(jià)格 松原導(dǎo)航地圖標(biāo)注 九鹿林外呼系統(tǒng)怎么收費(fèi) 滄州營(yíng)銷外呼系統(tǒng)軟件 沈陽智能外呼系統(tǒng)代理 創(chuàng)業(yè)電銷機(jī)器人 浙江地圖標(biāo)注 電銷機(jī)器人虛擬號(hào)碼 舞鋼市地圖標(biāo)注app

最近發(fā)現(xiàn)現(xiàn)有框架的通用查詢存儲(chǔ)過程的性能慢,于是仔細(xì)研究了下代碼:

復(fù)制代碼 代碼如下:

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

發(fā)現(xiàn)每次查詢都需要按條件查詢依次Area表,性能太低,于是利用臨時(shí)表將符合條件的記錄取出來,然后針對(duì)臨時(shí)表進(jìn)行查詢,代碼修改如下:
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
        --創(chuàng)建臨時(shí)表
        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

        --取總數(shù)
        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

經(jīng)過使用臨時(shí)表的確提高性能,不過有發(fā)現(xiàn)一個(gè)問題,就是count(Identifier)的確很耗性能,于是又進(jìn)行修改了

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
        --創(chuàng)建中記錄數(shù)
        DECLARE @SumCount int

        --創(chuàng)建臨時(shí)表
        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
        --設(shè)置總記錄數(shù)為剛操作的記錄數(shù)
        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調(diào)試存儲(chǔ)過程的完整步驟
  • SQLServer2008存儲(chǔ)過程實(shí)現(xiàn)數(shù)據(jù)插入與更新
  • Sql Server 存儲(chǔ)過程調(diào)用存儲(chǔ)過程接收輸出參數(shù)返回值
  • SQLServer存儲(chǔ)過程創(chuàng)建和修改的實(shí)現(xiàn)代碼
  • 獲取SqlServer存儲(chǔ)過程定義的三種方法
  • SqlServer存儲(chǔ)過程實(shí)現(xiàn)及拼接sql的注意點(diǎn)
  • 淺析SQL Server的嵌套存儲(chǔ)過程中使用同名的臨時(shí)表怪像

標(biāo)簽:寶雞 咸寧 商洛 海口 臺(tái)灣 西藏 日喀則 公主嶺

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sqlserver2005利用臨時(shí)表和@@RowCount提高分頁查詢存儲(chǔ)過程性能示例分享》,本文關(guān)鍵詞  sqlserver2005,利用,臨時(shí),表,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sqlserver2005利用臨時(shí)表和@@RowCount提高分頁查詢存儲(chǔ)過程性能示例分享》相關(guān)的同類信息!
  • 本頁收集關(guān)于sqlserver2005利用臨時(shí)表和@@RowCount提高分頁查詢存儲(chǔ)過程性能示例分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    最新国产精品久久精品| 久久久久9999亚洲精品| 欧美性高清videossexo| 久久久久久毛片| 紧缚捆绑精品一区二区| 日韩欧美一级精品久久| 久久99在线观看| 欧美精品一区二区三区很污很色的| 日韩不卡一二三区| 欧美变态tickle挠乳网站| 久久精品国产999大香线蕉| 26uuu久久综合| 久久成人免费日本黄色| 久久一留热品黄| av一区二区三区四区| 亚洲欧美在线另类| 欧美二区乱c少妇| 国内精品伊人久久久久av一坑| 久久日一线二线三线suv| 国产真实乱子伦精品视频| 国产婷婷色一区二区三区四区| 成人性生交大片免费看中文| 亚洲视频在线一区观看| 在线成人高清不卡| 粉嫩av一区二区三区在线播放| 亚洲私人影院在线观看| 日韩欧美一级二级三级| 99精品久久久久久| 美女视频黄久久| 亚洲欧美在线高清| 日韩欧美久久一区| 99精品视频一区| 韩国v欧美v亚洲v日本v| 亚洲国产日产av| 日本一区二区三区视频视频| 欧美日韩一区久久| 国产成人aaaa| 日本sm残虐另类| 亚洲精品第1页| 久久一区二区三区国产精品| 精品视频在线免费看| 国产91富婆露脸刺激对白| 亚洲国产经典视频| 在线不卡的av| 成人国产电影网| 午夜激情综合网| 国产精品久久久久三级| 欧美一区二区三区在线| 99riav一区二区三区| 久久成人综合网| 国产精品丝袜久久久久久app| 在线观看亚洲一区| 久久国产生活片100| 天天操天天色综合| 欧美精品一区二区三区视频| 欧美日韩一区二区三区免费看 | 亚洲精品欧美综合四区| 精品成人佐山爱一区二区| 欧美一三区三区四区免费在线看| 91麻豆免费观看| 91色在线porny| 国产成人av在线影院| 国产精品2024| 国产黄色精品视频| 国产精品一区二区三区四区| 免费在线一区观看| 日本va欧美va欧美va精品| 日韩av不卡在线观看| 日韩精品电影在线观看| 偷拍日韩校园综合在线| 天涯成人国产亚洲精品一区av| 一区二区三区国产豹纹内裤在线| 一区二区三区欧美日| 亚洲综合网站在线观看| 亚洲国产日韩精品| 日产国产欧美视频一区精品| 日韩电影在线一区二区三区| 日韩制服丝袜av| 久久精品久久久精品美女| 免费看欧美女人艹b| 国产一区二区三区日韩| 国内成+人亚洲+欧美+综合在线 | 欧洲一区二区三区免费视频| 91九色02白丝porn| 成人综合在线视频| 成人一区在线观看| 一本色道a无线码一区v| 在线免费观看一区| 欧美性大战久久久久久久蜜臀| 日本精品视频一区二区| 欧美理论片在线| 欧美日韩美女一区二区| 欧美视频完全免费看| 亚洲精品一区二区三区香蕉| 久久久不卡影院| 亚洲精品成a人| 久久机这里只有精品| 99亚偷拍自图区亚洲| 精品视频一区二区不卡| 亚洲精品一区二区三区影院 | 成人深夜福利app| 欧美吻胸吃奶大尺度电影| 欧美刺激午夜性久久久久久久 | 91麻豆精品国产无毒不卡在线观看| 欧美日韩精品免费| 久久久久久久网| 美女网站色91| 狠狠狠色丁香婷婷综合激情 | 欧美日韩一级视频| 久久嫩草精品久久久久| 日韩毛片视频在线看| 奇米在线7777在线精品| 北条麻妃国产九九精品视频| 91精品麻豆日日躁夜夜躁| 久久久777精品电影网影网| 亚洲少妇屁股交4| 韩国在线一区二区| 欧美视频三区在线播放| 国产精品毛片大码女人| 韩国一区二区视频| 91精品国产综合久久蜜臀| 一区二区三区中文字幕精品精品| 美腿丝袜亚洲一区| 欧美日韩一区二区在线观看视频 | 国产日韩欧美不卡| 亚洲电影在线免费观看| 国产成人精品免费视频网站| 欧美精品免费视频| 成人欧美一区二区三区小说| 国产精品一线二线三线| 日韩一级大片在线| 亚洲中国最大av网站| 国产成人精品影视| 欧美三级在线视频| 中文字幕一区二| 国产成人精品综合在线观看 | 免费成人av资源网| 色哟哟亚洲精品| 中文字幕欧美激情| 麻豆成人av在线| 欧美一级日韩不卡播放免费| 亚洲福利一二三区| 欧美怡红院视频| 亚洲国产婷婷综合在线精品| 欧美日韩在线直播| 天堂资源在线中文精品| 欧美久久久久久久久| 午夜激情综合网| 日韩精品一区二区三区在线观看| 另类的小说在线视频另类成人小视频在线 | 91福利视频网站| 亚洲图片欧美激情| 91免费国产在线| 亚洲蜜臀av乱码久久精品蜜桃| 色一情一伦一子一伦一区| 亚洲品质自拍视频| 色视频一区二区| 亚洲无人区一区| 欧美一个色资源| 国产麻豆日韩欧美久久| 国产精品区一区二区三| 色老综合老女人久久久| 午夜精品一区二区三区电影天堂| 欧美日韩在线直播| 免费欧美日韩国产三级电影| 精品91自产拍在线观看一区| 高清成人免费视频| 亚洲一区在线电影| 欧美精品一区二区三区视频| www.日韩在线| 日韩电影在线免费| 国产精品网站在线观看| 欧美精品vⅰdeose4hd| 国产在线一区观看| 亚洲视频 欧洲视频| 精品久久国产字幕高潮| 成人av网站在线观看免费| 亚洲在线视频网站| 91精品国产综合久久久久久漫画| 日韩av二区在线播放| 国产精品丝袜久久久久久app| 欧美午夜电影在线播放| 激情综合色播五月| 亚洲色图视频网| 欧美不卡一区二区三区四区| 99精品视频在线观看免费| 蜜臀av性久久久久av蜜臀妖精| 日本一区二区三区久久久久久久久不 | 粉嫩av一区二区三区| 一区二区三区四区中文字幕| 精品不卡在线视频| 欧美日韩高清一区二区三区| 波多野结衣中文一区| 久久99精品视频| 天天亚洲美女在线视频| 亚洲三级在线免费| 欧美国产精品中文字幕| 日韩精品一区二区三区视频播放 | 波多野结衣欧美| 国产剧情一区二区|