규칙성 있는 테이블에서 해당 데이터(찾으려는) SELECT 하기

규칙성 있는 테이블에서 해당 데이터(찾으려는) SELECT 하기

QA

규칙성 있는 테이블에서 해당 데이터(찾으려는) SELECT 하기

본문

예를들어


payment_201705

payment_201706 

payment_201707 

payment_201708 

payment_201709 


각각 테이블이 존재합니다.


해당 테이블은 한달에 한번씩 생성 됩니다.


아래 도표는 테이블 예시입니다.


<예시 테이블>

payment_XXXXXX 

 num

 user_id

 price

 0

 홍길동

 1000

 1

 박지성

 2000



이런 테이블이 생성되면서 상황에 따라 이렇게 데이터가 저장하는 시스템입니다.


그런데 여기서 제가 모든 payment_XXXXXX 테이블을 user_id가 "홍길동" 인 데이터만 모두 출력을 하고 싶습니다.


왜 테이블을 나누는 의문이 있을수 있는데 이 부분은 따로 말씀 안해주셨으면 합니다.


테이블을 LIKE 처럼 찾으면서 user_id가 "홍길동" 인 SELECT를 하는 방법이 따로 있을까요? 



foreach($date_array AS $date) {
  $sql = "SELECT * FROM notice_tax_ " . $date . " WHERE user_id='홍길동'"; 
  $db->query($sql);
} 


혹시 이 방법이 아닌 다른 방법이 있을까요?


이 질문에 댓글 쓰기 :

답변 3

프로시져를 통해 가능합니다.


A. 유저레벨 index 를 만드는 것이니 만큼 설계가 필요합니다. 그래도 범위가 늘어나는만큼 검색속도가 느려집니다.

1. 별도의 index 테이블 생성

2. 테이블이 생성될때 별도의 index 테이블을 따로 업데이트 시킨다.

3. 인덱스에의해 필터링된 테이블 명 범위에서 루프 검색


B. 테이블이 많아지면 그만큼 검색속도가 느려집니다.

1. information_schema 에서 관련 테이블 전체 루프 검색

union all 하시면 될듯 한데요


$sql = "";
$i = 0;
foreach($date_array AS $date) {
  if ($i != 0) {$sql .= " union all ";}
  $sql .= " SELECT * FROM notice_tax_ " . $date . " WHERE user_id='홍길동' "; 
  $i++;
} 
$db->query($sql);

답변을 작성하시기 전에 로그인 해주세요.
전체 193
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT