여러 테이블에 대한 단일 조건을 검사하여 테이블에서 데이터를 검색해야합니다. 아래 그림과 같이 다음 샘플 예제입니다PostgreSQL : 여러 테이블에 대한 하나의 조건
create table tb1 (
slno int,
name text,
address text
);
create table tb2 (
slno int,
fname text,
faddress text
);
create table tb3 (
slno int,
mname text,
maddress text
);
create table tb4 (
slno int,
lname text,
laddress text
);
insert into tb1 values(1,'aaa','bbb');
insert into tb1 values(2,'2aaa','2bbb');
insert into tb1 values(3,'3aaa','3bbb');
insert into tb1 values(4,'4aaa','4bbb');
insert into tb1 values(5,'5aaa','5bbb');
insert into tb2 values(1,'faaa','fbbb');
insert into tb2 values(2,'f2aaa','f2bbb');
insert into tb2 values(3,'f3aaa','f3bbb');
insert into tb2 values(4,'f4aaa','f4bbb');
insert into tb2 values(5,'f5aaa','f5bbb');
insert into tb3 values(1,'maaa','mbbb');
insert into tb3 values(2,'m2aaa','m2bbb');
insert into tb3 values(3,'m3aaa','m3bbb');
insert into tb3 values(4,'m4aaa','m4bbb');
insert into tb3 values(5,'m5aaa','m5bbb');
insert into tb4 values(1,'laaa','lbbb');
insert into tb4 values(2,'l2aaa','l2bbb');
insert into tb4 values(3,'l3aaa','l3bbb');
insert into tb4 values(4,'l4aaa','l4bbb');
insert into tb4 values(5,'l5aaa','l5bbb');
쿼리 :
select distinct t2.slno
from
tb1,
tb2 as t2,
tb3 as t3,
tb4 as t4
where
tb1.slno = t2.slno or
t2.slno = t3.slno or
t3.slno = t4.slno;
참고 : 위의 질의 내 작업을 완료하지만 거대한 데이터에 대한 실행을 위해 너무 많은 시간을 할애한다.
질문 : 1. 시간 복잡성을 줄이려면 어떻게해야합니까?
2. 더 좋은 방법이 있습니까?
아마도 PostgreSQL 파티션이 유용할까요? 나는 최근에 파티셔닝에 관한 다음 토론을 읽고 매우 계몽 적이라는 것을 알게되었습니다. https://github.com/fiksu/partitioned/blob/master/PARTITIONING_EXPLAINED.txt – hoipolloi
왜이 번호가 매겨진 테이블을 처음부터 만들었습니까? 목표의 목적은 무엇입니까? –
테이블에 인덱스가 없습니다. 적어도 조인 C 럼에 인덱스를 작성해야합니다. 그리고 where 절에서 오래된 구식 암시 적 조인을 사용하지 말고 명시 적'JOIN'을 사용하십시오. –