zoukankan      html  css  js  c++  java
  • 临时表性能问题

    我的存储过程分页部分,利用了三次相同条件的查询,获得最终的数据
    代码如下:

    SQL code

    DECLARE @TotalPage int
    SELECT @TotalPage=Count(Identifier) FROM View_BbsInfo WHERE
    (
    @Identifier IS NULL OR Identifier=@Identifier)AND
    (
    @IsTop IS NULL OR IsTop=@IsTop)AND
    (
    @IsPlacard IS NULL OR IsPlacard=@IsPlacard)
    IF(@TotalPage%@PageSize=0)
    BEGIN
    SET @TotalPage=@TotalPage/@PageSize
    END
    ELSE
    BEGIN
    SET @TotalPage=Round(@TotalPage/@PageSize,0)+1
    END
    SELECT TOP (@PageSize) Identifier,IsTop,IsPlacard,@TotalPage as totalPage FROM View_BbsInfo WHERE
    Identifier
    NOT IN (SELECT Top (@PageSize*(@CurrentPage-1))Identifier FROM View_BbsInfo WHERE
    (
    @Identifier IS NULL OR Identifier=@Identifier)AND
    (
    @IsTop IS NULL OR IsTop=@IsTop)AND
    (
    @IsPlacard IS NULL OR IsPlacard=@IsPlacard))
    AND
    (
    @Identifier IS NULL OR Identifier=@Identifier)AND
    (
    @IsTop IS NULL OR IsTop=@IsTop)AND
    (
    @IsPlacard IS NULL OR IsPlacard=@IsPlacard)



    优化后,我首先利用临时表将条件查询的所有结果存储起来,然后再分页查询该临时表

    代码如下:
    SQL code

    --查询结果到临时表
    SELECT TOP (@PageSize) Identifier,IsTop,IsPlacard INTO #tempTable FROM View_BbsInfo WHERE
    (
    @Identifier IS NULL OR Identifier=@Identifier)AND
    (
    @IsTop IS NULL OR IsTop=@IsTop)AND
    (
    @IsPlacard IS NULL OR IsPlacard=@IsPlacard)

    DECLARE @TotalPage int
    SELECT @TotalPage=Count(Identifier) FROM #tempTable
    IF(@TotalPage%@PageSize=0)
    BEGIN
    SET @TotalPage=@TotalPage/@PageSize
    END
    ELSE
    BEGIN
    SET @TotalPage=Round(@TotalPage/@PageSize,0)+1
    END
    SELECT TOP (@PageSize) Identifier,IsTop,IsPlacard,@TotalPage as totalPage FROM #tempTable WHERE
    Identifier
    NOT IN (SELECT Top (@PageSize*(@CurrentPage-1))Identifier FROM #tempTable



    问题来了,没进行测试,不知道哪种的性能更好些?

    尽管减少了三次查询的过程,但是建立临时表的过程依然需要插入、查询操作,感觉性能的确不好确定
    希望各位帮忙解释一下哪种比较好?


    作者:mikel
    出处:http://www.cnblogs.com/mikel/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    该文章也同时发布在我的独立博客中-www.mikel.cn

  • 相关阅读:
    Python操作Word:常用对象介绍
    Python入门教程 超详细1小时学会Python
    用几何画板画七边形的方法
    用ChemDraw画3D图的方法
    Chem 3D模型的参数值更改方法
    Chem 3D中怎么创建立体模型
    在几何画板中输入绝对值的方法
    怎么给几何画板文字加立体阴影效果
    几何画板放大和缩小的方法
    ChemDraw Pro和ChemBio3D Ultra有什么区别
  • 原文地址:https://www.cnblogs.com/mikel/p/1317394.html
Copyright © 2011-2022 走看看