poi si ce folosim ? pentru proceduri apelate des in care avem nevoie de tabele in care sa fie stocate cateva mii de randuri (10.000 50.000) ?
eu am facut urmatorul test:
declare @t1 table
(a int,
b varchar(1000),
c datetime)
declare @i int
set @i=0
while @i < 1000000
begin
insert into @t1 (a,b,c) values (@i,'1234456757869879090-=qwerwerteruort[piolajksdgflkajsdhf,mzxbnc,v',getdate())
set @i = @i + 1
end
select * from @t1 where a<10000
unde
CPU = 23775
Reads = 1097834
cel de al 2 :
create table #t1
(a int,
b varchar(1000),
c datetime)
declare @i int
set @i=0
while @i < 1000000
begin
insert into #t1 (a,b,c) values (@i,'1234456757869879090-=qwerwerteruort[piolajksdgflkajsdhf,mzxbnc,v',getdate())
set @i = @i + 1
end
create index ix on #t1 (a)
select * from #t1 where a<10000
drop table #t1
unde
CPU = 26816
Reads = 1113503
si fara index
create table #t1
(a int,
b varchar(1000),
c datetime)
declare @i int
set @i=0
while @i < 1000000
begin
insert into #t1 (a,b,c) values (@i,'1234456757869879090-=qwerwerteruort[piolajksdgflkajsdhf,mzxbnc,v',getdate())
set @i = @i + 1
end
select * from #t1 where a<10000
drop table #t1
CPU = 25381
Reads = 1099355
Din ce arata testele se pare ca cel mai bun este @t1.
Indexul poate ma ajuta la select , dar per total nu se observa diferenta , ba chiar mai mult ma ingreuneaza.
Gresesc ceva ?
Astept si parerile voastre legate de folosirea variabilei tabel si a tabelei temporare, care este cea mai buna pentru performanta in cazul in care procedura este apelata des si se folosesc inregistrari intre 1.000 si 10.000 ?
La fiecare apel de procedura se creeaza tabela temporara se foloseste si se da drop ....
Multumesc anticipat