相关疑难解决方法(0)

在SQL Server中分页结果的最佳方法是什么

如果您还想获得结果总数(在分页之前),那么在SQL Server 2000,2005,2008,2012中分页结果的最佳方法(性能明智)是什么?

sql sql-server performance pagination

441
推荐指数
7
解决办法
40万
查看次数

使用此查询实现分页(跳过/获取)功能

我一直试图了解如何在SQL中实现自定义分页,例如阅读像这样的文章.

我有以下查询,它完美地工作.但我想用这个实现分页.

SELECT TOP x PostId FROM ( SELECT PostId, MAX (Datemade) as LastDate
 from dbForumEntry 
 group by PostId ) SubQueryAlias
 order by LastDate desc
Run Code Online (Sandbox Code Playgroud)

我想要的是什么

我有论坛帖子,有相关条目.我想获得最新添加的条目的帖子,所以我可以选择最近辩论的帖子.

现在,我希望能够获得"最近10到20个活跃的帖子",而不是"前10名".

我试过了什么

我试图将ROW函数实现为文章中的那个,但实际上没有运气.

有什么想法如何实现呢?

sql sql-server pagination join

118
推荐指数
4
解决办法
12万
查看次数

SQL性能:WHERE与WHERE(ROW_NUMBER)

我希望在表格中获得第n个到第m个记录,以下2个解决方案中的最佳选择:

解决方案1:

    SELECT * FROM Table WHERE ID >= n AND ID <= m
Run Code Online (Sandbox Code Playgroud)

解决方案2:

    SELECT * FROM 
                (SELECT *, 
                        ROW_NUMBER() OVER (ORDER BY ID) AS row 
                 FROM Table 
                )a 
    WHERE row >= n AND row <= m
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance

19
推荐指数
2
解决办法
1万
查看次数

ASP.NET SQL Server选择前N个值但跳过M个结果

我正在开发一个ASP.Net项目,用于在数据库中显示网站上的信息.我想从新闻表中选择前10项,但跳过第一项,我遇到了一些问题.

<asp:SqlDataSource ID="SqlDataSource1" 
                   runat="server" ProviderName="System.Data.SqlClient"
                   ConnectionString="<%$ ConnectionStrings:ClubSiteDB %>" 
                   SelectCommand="SELECT top 5 [id], 
                                               [itemdate], 
                                               [title], 
                                               [description], 
                                               [photo] 
                                  FROM [Announcements] order by itemdate desc">
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止,但我无法在网上找到有关如何跳过记录的任何信息

sql sql-server asp.net

11
推荐指数
2
解决办法
1万
查看次数

从远程服务器检索数十亿行?

我试图从远程SQL Server检索大约2000亿行.为了优化这一点,我将查询限制为仅使用索引列作为过滤器,并且仅选择列的子集以使查询看起来像这样:

SELECT ColA, ColB, ColC FROM <Database> WHERE RecordDate BETWEEN '' AND ''
Run Code Online (Sandbox Code Playgroud)

但看起来除非我将查询限制在几个小时的时间窗口,查询在所有情况下都会失败并出现以下错误:

OLE DB provider "SQLNCLI10" for linked server "<>" returned message "Query timeout expired".
Msg 7399, Level 16, State 1, Server M<, Line 1
The OLE DB provider "SQLNCLI10" for linked server "<>" reported an error. Execution terminated by the provider because a resource limit was reached.
Msg 7421, Level 16, State 2, Server <>, Line 1
Cannot fetch the rowset from OLE DB provider "SQLNCLI10" …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

7
推荐指数
2
解决办法
8338
查看次数

使用LINQ高效分页大数据集

在研究在C#中实现分页的最佳方法时(使用LINQ),大多数建议都是这样的:

// Execute the query
var query = db.Entity.Where(e => e.Something == something);

// Get the total num records
var total = query.Count();

// Page the results
var paged = query.Skip((pageNum - 1) * pageSize).Take(pageSize);
Run Code Online (Sandbox Code Playgroud)

这似乎是通常建议的策略(简化).

对我来说,我的分页主要目的是提高效率.如果我的表包含120万条记录,其中Something ==某些东西,我不想同时检索所有这些记录.相反,我想分页数据,抓取尽可能少的记录.但是用这种方法,似乎这是一个有争议的问题.

如果我理解正确,第一个语句仍然检索120万条记录,然后根据需要进行分页.

以这种方式分页实际上是否提高了性能?如果每次都要检索120万条记录,那么重点是什么(除了显而易见的UI好处)?

我误解了吗?任何.NET专家都可以给我一个关于LINQ,分页和性能的课程(处理大型数据集时)?

.net c# linq

1
推荐指数
1
解决办法
2535
查看次数

从第n行开始选择n行数

这里的SQL-noobie想要将以下存储过程修改为从指定行开始选择指定行数的行.例如,我想从第10行开始选择5行,即10,11,12,13,14,15.

这是我的SP看起来像atm:

SELECT Posts.Slug, Comments.commentId, Comments.[date], Comments.name, Comments.[text]
FROM Comments 
INNER JOIN Posts ON Comments.postId = Posts.Id
WHERE Comments.approved = 0
Run Code Online (Sandbox Code Playgroud)

我不需要按顺序阅读结果,以便重要.

谢谢!

sql t-sql sql-server

-4
推荐指数
1
解决办法
1453
查看次数

标签 统计

sql ×6

sql-server ×6

pagination ×2

performance ×2

.net ×1

asp.net ×1

c# ×1

join ×1

linq ×1

sql-server-2008 ×1

t-sql ×1