簡體   English   中英

使用視圖優化查詢性能

[英]Optimisation of the performance of the query using views

我已經為我的項目創建了視圖,現在我想針對速度進行優化。 如何確定視圖可以優化? 索引對此有用嗎?

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 AS ent內部聯接dbo.VW_Contrats AS ct ON ent.Siret = ct.Siret和ct.Entappcr = ent.entApp

我正在使用兩個視圖VW_Entreprise和VW_Contrats

對於此JOIN

dbo.VW_Entreprise AS ent 
INNER JOIN dbo.VW_Contrats AS ct ON ent.Siret = ct.Siret AND ct.Entappcr = ent.entApp

您需要以下索引:

VW_Entreprise(Siret, entApp)
VW_Contrats(Siret, Entappcr)

如果這些索引尚不存在,請創建它們。 如果不了解您的數據結構和基礎視圖的定義,就很難提供更多建議。 一些提示:

  • SELECT DISTINCT意味着RDBMS需要做更多的工作,因為它需要檢查重復項(並且您將返回大量的列)。 使用前請確保您確實需要它
  • 查詢視圖意味着,在后台,您的RDBMS將需要以某種方式運行定義視圖的查詢。 有時直接查詢基礎表會更有效(但再次重申,如果沒有看到視圖的實際定義就無法確定)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM