首页
学习
活动
专区
圈层
工具
发布

TSQL优化
EN

Stack Overflow用户
提问于 2012-11-26 17:04:34
回答 2查看 132关注 0票数 2

我有下面的查询,执行时间为2秒,因为两个表中有大量行(每行100多万行),我想知道还有什么可以做的来优化查询。

tblInspection.ID bigint (主键)

tblInspection.IsPassedFirstTime位(非聚集索引)

tblInspectionFailures.ID bigint (主键)

tblInspectionFailures.InspectionID bigint (非聚集索引)

查询

代码语言:javascript
复制
SELECT TOP 1 tblInspection.ID FROM tblInspection 
                INNER JOIN tblInspectionFailures ON tblInspection.ID = tblInspectionFailures.InspectionID 
                WHERE (tblInspection.IsPassedFirstTime = 1)

执行计划

我可以看到,我正在对索引进行聚集搜索,但仍然需要一些时间。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-26 17:09:16

我唯一能想到的就是

代码语言:javascript
复制
    SELECT  i.ID FROM 
    (select TOP 1 id from tblInspection 
     WHERE IsPassedFirstTime = 1) i
                    INNER JOIN tblInspectionFailures ON 
i.ID = tblInspectionFailures.InspectionID 
票数 1
EN

Stack Overflow用户

发布于 2012-11-26 18:07:32

试一试

代码语言:javascript
复制
SET ROWCOUNT 1

SELECT tblInspection.ID FROM tblInspection 
            INNER JOIN tblInspectionFailures ON tblInspection.ID = tblInspectionFailures.InspectionID 
            WHERE (tblInspection.IsPassedFirstTime = 1)

这基本上是一样的,但是告诉sql在第一个行之后停止返回行。

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

https://stackoverflow.com/questions/13569601

复制
相关文章

相似问题

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