2017-07-19 3 views
1

Ich habe eine temporäre Tabelle in einer gespeicherten Prozedur erstellt und indiziert sowie eine temporäre Variable Tabelle erstellt und indiziert. Ich finde die Tempentabelle schneller. Bitte beachten Sie meine Implementierung unten. Könnte mir jemand sagen, ob es einen Unterschied zwischen der Art und Weise ist i Indizestemporäre Tabelle vs temporäre Tabelle Variable Indizierung

Temptabelle Implementierung

if object_id('tempdb..#maxPeriod') is not null drop table #maxPeriod else 
    select 
      fp.companyId, 
      max(fi.periodenddate) as maxPeriod 
    into #maxPeriod 
    from ciqfinperiod fp inner join ciqcompany ci on fp.companyId = ci.companyId 
      join ciqfininstance fi on fi.financialperiodid = fp.financialperiodid 
    where fp.periodtypeid = 4 
      and fi.periodenddate > @date 
      and fi.latestforfinancialperiodflag = 1 
      and latestfilingforinstanceflag = 1 

    group by fp.companyId 

    CREATE NONCLUSTERED INDEX IDX_companyId2 on #maxPeriod(companyId,maxPeriod) 

temporäre Tabelle variable Implementierung angewandt haben

DECLARE @maxPeriod TABLE (companyId INT, maxPeriod smalldatetime, 
          UNIQUE NONCLUSTERED (companyId, maxPeriod)) 
    INSERT INTO @maxPeriod 
select 
     fp.companyId, 
     max(fi.periodenddate) as maxPeriod 

from ciqfinperiod fp inner join ciqcompany ci on fp.companyId = ci.companyId 
     join ciqfininstance fi on fi.financialperiodid = fp.financialperiodid 
where fp.periodtypeid = 4 
     and fi.periodenddate > @date 
     and fi.latestforfinancialperiodflag = 1 
     and latestfilingforinstanceflag = 1 

group by fp.companyId 
+1

Letzteres hat eine UNIQUE-Einschränkung die ehemalige nicht .. –

+0

Wie verwende ich nicht geclusterten Index nur auf temporäre Tabellenvariablen – Tom

+0

Ich finde die ehemalige schneller als die letztere derzeit – Tom

Antwort

Verwandte Themen