首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询优化

查询优化
EN

Stack Overflow用户
提问于 2012-08-02 07:23:16
回答 1查看 105关注 0票数 1

我在Microsoft中有一个查询,需要c.a 6秒才能返回1000条记录。

代码语言:javascript
复制
SELECT DISTINCTROW tb_bauteile.*
FROM   tb_bauteile
       LEFT JOIN FehlerCodes_akt_Liste
         ON tb_bauteile.CDT = FehlerCodes_akt_Liste.CDT
WHERE  (( ( FehlerCodes_akt_Liste.Steuergerät ) = 'MEDC17' ))
ORDER  BY FehlerCodes_akt_Liste.Fehlerpfad;

我把索引放在必要的字段上。FehlerCodes_akt_Liste tb_bauteile有c.a 3000记录和c.a 20000记录。如果删除(order子句),查询返回记录的速度非常快。如何优化查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 07:55:53

你有..。

代码语言:javascript
复制
tb_bauteile LEFT JOIN FehlerCodes_akt_Liste

但是这个WHERE条款..。

代码语言:javascript
复制
FehlerCodes_akt_Liste.Steuergerät = 'MEDC17'

这个约束使得LEFT JOIN变得毫无意义..。您的结果集将只包括在tb_bauteile.CDTFehlerCodes_akt_Liste.CDT之间匹配的行。您还可以切换到一个应该更快的INNER JOIN

这里还有一些其他的问题要研究。

  1. 如果删除DISTINCTROW,您注意到对性能的影响吗?
  2. 因此,您有关于CDTSteuergerätFehlerpfad的索引。您是否也执行了紧凑操作(更新统计信息)?
  3. 检查为查询创建的查询计划。解释起来可能很有挑战性,但也许会发现一些有用的东西。使用Microsoft的ShowPlan编写更高效的查询
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11772813

复制
相关文章

相似问题

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