我必须从包含定义的(长)sessionId的数据库表中选择所有行,其中sessionId行会被索引。但是速度很慢,而且由于访问代码非常简单,我想知道问题出在哪里。这里是三个层的代码:附性能的使用ANTS截图从数据库的索引列中检索索引ID很慢
var localPath = BusinessClient.Instance.Tracker.GetSpecifiedMilestonesInSessionObjects(milestonesInSession.SessionId).ToList();
public IQueryable<MilestonesInSession> GetSpecifiedMilestonesInSessionObjects(long sessionId)
{
var query = from m in _milestonesInSessionRepository.GetAll()
where m.SessionId == sessionId
select m;
return query;
}
public IQueryable<Model.Tracker.MilestonesInSession> GetAll()
{
var query = from milestoneSession in _dataContext.Repository<Linq.TrackerMilestonesInSession>()
select new Model.Tracker.MilestonesInSession
{
MilestoneId = milestoneSession.MilestoneId,
CreatedDate = milestoneSession.CreatedDate,
SessionId = milestoneSession.SessionId,
ProductId = milestoneSession.ProductId,
TrackerId = milestoneSession.TrackerId,
StatusId = milestoneSession.StatusId,
BankId = milestoneSession.BankId
};
return query;
}
这里:
表示层
个业务层
数据访问层
运行SQL Server Profiler,拦截查询,在其上运行解释/查询计划。不知道你的数据库布局,这是无法回答的。 – CodeCaster
这是建立的查询: {SELECT [t0]。[SessionId],[t0]。[MilestoneId],[t0]。[CreatedDate],[t0]。[ProductId],[t0]。[TrackerId], [t0]。[StatusId],[t0]。[BankId] FROM [dbo]。[TrackerMilestonesInSessions] AS [t0] WHERE [t0]。[SessionId] = @ p0 } – Attila
我无法做任何事该查询,我没有你的数据库。 **您必须在SSMS中运行该查询并显示执行计划,这将显示任何瓶颈。 – CodeCaster