#索引のついた列を使ったJoin条件と他の条件をORでつないだSELECT文

Begin;
Initialize;
InitializeSession "";
Command "create database TESTDB";
TerminateSession;

InitializeSession "TESTDB";

# テーブルT1
Command  "create table T1(f1 int,f2  nvarchar(4),f3 int)";
Command  "insert into T1 (f1, f2, f3) values (1,  'ほげ', 111)";
Command  "insert into T1 (f1, f2, f3) values (2,  'ホゲ', 222)";
Command  "insert into T1 (f1, f2, f3) values (3,  'ぴよ', 333)";
Command  "insert into T1 (f1, f2, f3) values (4,  'ホゲ', 111)";
Command  "insert into T1 (f1, f2, f3) values (5, 'ぴよ', 222)";
Command  "insert into T1 (f1, f2, f3) values (6,  'ホゲ', 333)";
Command  "insert into T1 (f1, f2, f3) values (7,  null, 111)";
Command  "insert into T1 (f1, f2, f3) values (8,  'ぴよ', 222)";
Command  "create index I1 on T1(f1)";


# テーブルT2
Command  "create table T2(f1 int,f2  nvarchar(4),f3  int)";
Command  "insert into T2 (f1, f2, f3) values (1,  'ぴよ',  111)";
Command  "insert into T2 (f1, f2, f3) values (2,  'ホゲ',  222)";
Command  "insert into T2 (f1, f2, f3) values (3,  'ぴよ',  333)";
Command  "insert into T2 (f1, f2, f3) values (4,  'ホゲ',  444)";
Command  "insert into T2 (f1, f2, f3) values (5,  null,  555)";
Command  "insert into T2 (f1, f2, f3) values (6,  null,  666)";
Command  "insert into T2 (f1, f2, f3) values (7,  'ぴよ',  777)";
Command  "insert into T2 (f1, f2, f3) values (8,  null, 888)";
Command  "create index I2 on T2(f1)";

# -- --join .. on 
Command  "select * from T1 inner join T2 on T1.f1 = T2.f1 or T1.f2=T2.f2";
Command  "select * from T1 left outer join T2 on T1.f1 = T2.f1 or T1.f2=T2.f2";
Command  "select * from T1 right outer join T2 on T1.f1 = T2.f1 or T1.f2=T2.f2";


# -- --join .. using 
#Command  "select * from T1 inner join T2 using (f1)";
#Command  "select * from T1 left outer join T2 using (f1)";
#Command  "select * from T1 right outer join T2 using (f1)";

Command  "drop table T1";

Command  "drop table T2";


TerminateSession;
# DBの後始末
InitializeSession "";
Command  "drop database TESTDB";
TerminateSession;
Terminate;
End;