【发布时间】:2013-12-07 00:49:30
【问题描述】:
我正在开发一个 asp.net mvc Web 应用程序,并且我正在使用 Sql server 2008 R2 + Entity 框架。 现在在 sql 服务器上,我在任何可能按 .例如,我在 Tag 列上的 Sql 服务器上创建了一个唯一索引,并且我已将索引的排序顺序定义为升序。现在我的应用程序中有一些查询对标签进行升序排序,而其他查询对标签进行降序排序,如下所示:-
LatestTechnology = tms.Technologies.Where(a=> !a.IsDeleted && a.IsCompleted).OrderByDescending(a => a.Tag).Take(pagesize).ToList(),;
TechnologyList = tms.Technologies.Where(a=> !a.IsDeleted && a.IsCompleted).OrderBy (a => a.Tag).Take(pagesize).ToList();
所以我的问题是两个 OrderByDescending(a => a.Tag)。 & OrderBy(a => a.Tag),可以从 Tag 列上的 sql server 上的唯一索引中受益吗?或者我应该在 sql server 上定义两个唯一索引,一个具有升序排序,而另一个索引具有降序排序? 谢谢
编辑
以下查询:-
LatestTechnology = tms.Technologies.Where(a=> !a.IsDeleted && a.IsCompleted).OrderByDescending(a => a.Tag).Take(pagesize).ToList();
将生成 sql server profiler 提到的以下 sql 语句:-
SELECT TOP (15)
[Extent1].[TechnologyID] AS [TechnologyID],
[Extent1].[Tag] AS [Tag],
[Extent1].[IsDeleted] AS [IsDeleted],
[Extent1].[timestamp] AS [timestamp],
[Extent1].[TypeID] AS [TypeID],
[Extent1].[StartDate] AS [StartDate],
[Extent1].[IT360ID] AS [IT360ID],
[Extent1].[IsCompleted] AS [IsCompleted]
FROM [dbo].[Technology] AS [Extent1]
WHERE ([Extent1].[IsDeleted] <> cast(1 as bit)) AND ([Extent1].[IsCompleted] = 1)
ORDER BY [Extent1].[Tag] DESC
【问题讨论】:
标签: asp.net-mvc linq entity-framework sql-server-2008-r2 indexing