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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
규칙성 있는 테이블에서 해당 데이터(찾으려는) 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);

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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