db1
ve db2
gibi iki veritabanım var.SQL Server 2008 R2: Farklı veritabanlarındaki tablodaki çoklu UNION
veritabanı db1
yani test1
ve veritabanı db2
iki tablo yani test2
ve test3
içeren 1 tablo içerir.
Bazı demo kayıtları aşağıdaki tabloda yer almaktadır.
Veritabanı: db1
Tablo: test1
Create table test1
(
ID int,
hrs int,
dates date,
st_date date,
ed_date date
);
insert into test1 values(1,10,'2000-01-01','1900-01-01','2016-01-01');
insert into test1 values(2,20,'2000-02-01','1900-01-01','2016-01-01');
insert into test1 values(3,30,'2000-03-01','1900-01-01','2016-01-01');
insert into test1 values(4,40,'2000-04-01','1900-01-01','2016-01-01');
Veritabanı:db2
Tablo: test2
create table test2
(
ID int,
ID2 int
);
insert into test2 values(1,11);
insert into test2 values(2,22);
insert into test2 values(3,33);
insert into test2 values(4,44);
Veritabanı:db2
Tablo: test3
create table test3
(
ID int,
date date
);
insert into test3 values(1,'2000-01-01');
insert into test3 values(2,'2000-02-02');
insert into test3 values(3,'2000-03-03');
insert into test3 values(4,'2000-04-04');
Not: Şimdi ben union
her üç tablo en aşağıdaki sorgu yürütülürken ama performans sorunu alıyorum. test2
, test3
tabloları da db1
select nm,sum(x.avghrs)
from
(
select t1.nm, sum(hrs) as avghrs
from db2.test3 t3,
db2.test2 t2,
db1.test1 t1
where t1.id = t2.id
t3.id = t2.id
group by t1.nm
union
select t1.nm, sum(hrs) as avghrs
from db1.test3 t3,
db1.test2 t2,
db1.test1 t1
where t1.id = t2.id
t3.id = t2.id
group by t1.nm
union
select nm, 0 as avghrs
from test1
where dates between st_date and ed_date
) x
group by nm;
mevcut vardır vardır modifikasyon herhangi bir ihtiyaç varsa söyle?
[Yürütme planı] 'nın ekran görüntüsünü ekleyebilirsiniz (http://stackoverflow.com/questions/7359702/how-do-i-obtain-a-query-execution-plan)? – zedfoxus
@vkp, üzgünüm! Benim hatam. – MAK
, "sendika" da 1 ve 2 sorguları aynı değil? –