2017-08-14 271 views
-1

我创建了一个视图,该视图使用连接从多个表中返回数据。当我从该视图中选择而不使用Order By子句时,执行该查询所用的时间仅为1秒或更短。但是,当我用我的选择查询使用order by时,大约需要27秒才能从该视图返回top(15)记录。优化SQL Server查询

这里是我的查询,我跑要查看

SELECT TOP(15) * 
FROM V_transaction 
ORDER BY time_stamp DESC 

注意得到的数据:那查看了记录总数为30多万

我可以在视图的设计改变什么获得更好的表现?

+3

'time_stamp'是否在底层表中有一个索引? – DaveShaw

+1

由于没有关于底层表上的实际表模式和索引的信息,因此无法为您提供帮助。您需要提供所有必要的信息以帮助我们。 – pmbAustin

回答

0

你为什么不创建存储的天数+几秒钟的由列每个日期的记录,然后为了一个额外的列..

弹出进头脑创建索引
3

第一件事在视图中time_stamp。如果您不想/无法创建索引视图,则可以在基础表的列中创建索引,并从中获取该值。这应该会增加您的查询性能。

如果您在执行计划后仍然存在问题 - 这应该会显示您的查询出现性能问题的确切位置/原因。