Subject Firebird 2.5 Beta 2 65267 Full join
Author gusta1308
I do trying run follow query:

SELECT
COALESCE(D1.C1, D2.C1) C1,
COALESCE(D1.C2, D2.C2) C2,
COALESCE(D1.C3, D2.C3) C3,
COALESCE(SUM(D1.D1), 0) T1,
COALESCE(SUM(D2.D2), 0) T2
FROM TD_DATA1 D1
FULL JOIN TD_DATA2 D2
ON D2.C1 = D1.C1
AND D2.C2 = D1.C2
AND D2.C3 = D1.C3
GROUP BY COALESCE(D1.C1, D2.C1),
COALESCE(D1.C2, D2.C2),
COALESCE(D1.C3, D2.C3)

or

SELECT
D1.C1, D2.C1,
D1.C2, D2.C2,
D1.C3, D2.C3,
COALESCE(SUM(D1.D1), 0) T1,
COALESCE(SUM(D2.D2), 0) T2
FROM TD_DATA1 D1
FULL JOIN TD_DATA2 D2
ON D2.C1 = D1.C1
AND D2.C2 = D1.C2
AND D2.C3 = D1.C3
GROUP BY D1.C1, D2.C1,
D1.C2, D2.C2,
D1.C3, D2.C3

The table structure is:

CREATE TABLE TD_DATA1 (
C1 VARCHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251,
C2 INTEGER NOT NULL,
C3 DATE NOT NULL,
D1 FLOAT NOT NULL);
CREATE INDEX IDX_TD_DATA1 ON TD_DATA1(C1,C2,C3);
-- 100,000 rows


CREATE TABLE TD_DATA2 (
C1 VARCHAR(20) CHARACTER SET WIN1251 NOT NULL COLLATE WIN1251,
C2 INTEGER NOT NULL,
C3 DATE NOT NULL,
D2 FLOAT NOT NULL);
CREATE INDEX IDX_TD_DATA2 ON TD_DATA2(C1,C2,C3);
-- 100,000 rows

My machine is Athlon X2 5600+, 2 GB, 90 GB free space, and the query never
finish, otherway is

SELECT
C1,
C2,
C3,
SUM(T1) T1,
SUM(T2) T2
FROM (
SELECT
D1.C1,
D1.C2,
D1.C3,
SUM(D1.D1) T1,
NULL T2
FROM TD_DATA1 D1
GROUP BY D1.C1, D1.C2, D1.C3

UNION ALL

SELECT
D1.C1,
D1.C2,
D1.C3,
NULL T1,
SUM(D1.D2) T2
FROM TD_DATA2 D1
GROUP BY D1.C1, D1.C2, D1.C3
) X
GROUP BY C1, C2, C3

and execute time is 1.203, someone explain me?

Thank for your advance