首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢SQL查询,按日期排序表?

慢SQL查询,按日期排序表?
EN

Stack Overflow用户
提问于 2012-01-11 06:27:21
回答 3查看 1.7K关注 0票数 0

我有一个Sql-Server-2008数据库,我经常从这个数据库中查询超过3000万个条目(joy!)。不幸的是,这个数据库不能被彻底改变,因为它仍在用于R/D。

当我从这个数据库中查询时,它总是花费很长时间。我的意思是,我还没有足够的耐心等待结果(2分钟后,我不得不取消,以避免将研发部门锁在外面)。即使我使用较短的日期范围(超过几个月),基本上也不可能得到任何结果。我使用来自4个列的请求进行查询,不幸的是,我不得不对另一个表使用内连接(据我所知,这在查询效率方面是非常昂贵的--但这是不可避免的)。此内连接表的条目少于100k。

我想知道的是,是否可以将表组织为默认按日期排序,以减少搜索结果的数量?

如果这是不可能的,有什么我可以做的以减少查询时间?是否有其他有用的信息可以帮助我提出解决方案?

我已经包含了我使用的查询的一个示例:

代码语言:javascript
复制
SELECT DISTINCT N.TestName 
FROM [DalsaTE].[dbo].[ResultsUut] U 
INNER JOIN [DalsaTE].[dbo].[ResultsNumeric] N 
ON N.ModeDescription = 'Mode 8: Low Gain - Green-Blue' 
AND N.ResultsUutId = U.ResultsUutId
WHERE U.DeviceName = 'BO-32-3HK60-00-R' 
AND U.StartDateTime > '2011-11-25 01:10:10.001'
ORDER BY N.TestName

如有任何帮助或建议,欢迎光临!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-11 06:56:19

听起来datetime可能是一个基于文本的字段,因此没有使用索引?

你可以尝试下面的方法来看看你的速度有没有提高:

代码语言:javascript
复制
select distinct N.TestName 
from            [DalsaTE].[dbo].[ResultsUut] U 
inner join      [DalsaTE].[dbo].[ResultsNumeric] N 
    on N.ModeDescription = 'Mode 8: Low Gain - Green-Blue' 
    and N.ResultsUutId = U.ResultsUutId
where           U.DeviceName = 'BO-32-3HK60-00-R' 
                and U.StartDateTime > cast('2011-11-25 01:10:10.001' as datetime)
order by        N.TestName

将内部连接改为左外部连接也是值得的,因为这些连接偶尔会在没有任何原因的情况下执行得更快(至少有一个我不知道的原因)。

票数 2
EN

Stack Overflow用户

发布于 2012-01-11 06:43:27

您可以根据日期列添加索引,这将缩短查询时间。可以使用alter table命令,也可以使用表设计器。

连接的唯一目的是提供排序吗?如果是这样的话,一件快速尝试的事情就是移除它,看看它有多大的不同--至少这样你就知道把注意力集中在哪里了。

最后,SQL server management studio提供了一些有用的工具,例如可以帮助诊断性能问题的执行计划。祝好运!

票数 2
EN

Stack Overflow用户

发布于 2012-01-11 06:52:50

有许多问题可能会导致查询执行延迟。

索引(主键除外)不会对数据进行重新排序,它们只是创建一个索引(比如phonebook),该索引对许多值进行排序并指向主键。

在看不到数据类型或现有索引的情况下,这很困难,但至少,下面的升序索引可能会有所帮助:

DalsaTE.dbo.ResultsNumeric ModeDescription、ResultsUutId和TestName

DalsaTE.dbo.ResultsUut StartDateTime、DeviceName和ResultsUutId

如果没有上面的索引,就可以完成您给出的示例查询,而不需要对实际的表数据执行任何查找。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8811449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档