首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用视图优化查询的性能

使用视图优化查询的性能
EN

Stack Overflow用户
提问于 2019-09-16 09:32:12
回答 1查看 49关注 0票数 0

我已经为我的项目创建了视图,现在我想优化它们以达到速度的目的。如何识别视图可以优化?对此有用的索引。

代码语言:javascript
复制
SELECT DISTINCT     
        ent.ID_Entreprise, 
ct.Siret,
ct.Scont,
ct.Cont,
ct.Souscont, 
ct.Entappcr, 
ct.Cb, 
ct.Sptf,
ct.Socuti, 
ct.EntiteTPG, 
ct.Datefcb, 
ct.Dtfineffcb, 
ct.Stacb, 
ct.Libstacb, 
ct.Perap, 
ct.Libperap, 
ct.Deremis, 
ct.Derregl, 
ct.typepdt, 
ct.Libtypepdt, 
ct.Libpdt, 
ct.Libcb, 
ct.CodeICX, 
ct.AppLeader, 
(CASE ct.typepdt 
WHEN 'S' THEN '1'
WHEN 'P' THEN '2' 
WHEN 'R' THEN '3' 
WHEN 'E' THEN '3'
WHEN 'I' THEN '4' 
ELSE '5' END) AS orderParam, 
ct.Reg, 
ct.ent_opt_set, 
'' AS CdGraReg, 
'' AS CaisseSS, 
'' AS CentreSS, 
ct.affilSalEnabled, 
ct.AtOperationnel,
ct.Formule, 
ct.FormuleSocle, 
ct.Srs, 
ct.Cntcb_actif, 
ct.Libstacb_vision_C, 
ct.DATPA, 
ct.DATENVOI, 
ct.DATREGUL,
ct.UC,
ct.Art39, 
ct.Dateff, 
ct.Cnt_actif, 
ent.Raisoc, 
ct.mensualisation, 
ct.repartition, 
ct.optFin, 
ct.Date_hors_infocentre,
ent.visionC   

从dbo.VW_Entreprise作为内部连接dbo.VW_Contrats AS ct ON ent.Siret = ct.Siret和ct.Entappcr = ent.entApp

我使用两个视图VW_Entreprise和VW_Contrats

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-16 09:34:19

对于这个JOIN

代码语言:javascript
复制
dbo.VW_Entreprise AS ent 
INNER JOIN dbo.VW_Contrats AS ct ON ent.Siret = ct.Siret AND ct.Entappcr = ent.entApp

您需要下列索引:

代码语言:javascript
复制
VW_Entreprise(Siret, entApp)
VW_Contrats(Siret, Entappcr)

如果这些索引还不存在,请创建它们。如果不了解您的数据结构和底层视图的定义,就很难提供更多的建议。不过,有几个提示:

  • SELECT DISTINCT意味着您的关系数据库管理系统需要更多的工作,因为它需要检查副本(并且您正在返回大量列);在使用它之前确保您确实需要它。
  • 查询视图意味着,RDBMS在某种程度上将需要运行定义视图的查询;有时直接查询底层表(但是,如果不查看视图的实际定义,则无法确定这一点)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57954007

复制
相关文章

相似问题

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