【问题标题】:Improving paging performance for gridview?提高gridview的分页性能?
【发布时间】:2010-01-19 22:15:56
【问题描述】:

我正在从事一个小型项目,该项目需要 gridview 分页最多 100k 条记录。有什么方法可以提高性能。我尝试使用带有 Temp 表的 sql server 进行分页,但它仍然有点慢。

有什么想法吗?

【问题讨论】:

    标签: asp.net gridview pagination


    【解决方案1】:

    您可以添加一个只返回一系列行的存储过程。让页面跟踪您当前所在的页面,并仅请求下 x 行或前 x 行。

    例如:

    @firstRow   int,
    @lastRow    int
    select ROW_NUMBER() over (order by [MyField]) as rowNum, * 
    from [MyTable] 
    where rowNum between @firstRow and @lastRow 
    

    【讨论】:

    • 一定会喜欢 ROW_NUMBER() 函数。
    • 但是 Row_Number() 在较高的记录中会因为 order by 而变慢。例如(100000 到 100010 之间)比(90000 到 90000010 之间)慢。您对此有何看法?
    【解决方案2】:

    不确定 Tj Kellie 的想法是否可行。这是一个改进:

    select * from
    (
    select ROW_NUMBER() over (order by [MyField]) as rowNum, * 
    from [MyTable] 
    ) 
    as TableWithRows
    Where Row<=20 and Row>=10
    

    将返回第 10 到 20 行。 您可以通过在 ROW_NUMBER() 函数之前添加 select TOP [LastRow] 来进一步改进它

    【讨论】:

      【解决方案3】:

      查询中的更正 选择 * 从 ( 选择 ROW_NUMBER() over (order by [MyField]) as rowNum, * 来自 [我的表] ) 作为 TableWithRows 其中 RowNum=10

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-19
        • 1970-01-01
        • 1970-01-01
        • 2014-11-25
        • 2021-04-03
        相关资源
        最近更新 更多