데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

사용중인 DB는 MYSql입니다.

 

정확한 쿼리부탁드려요 ㅜㅜ

데이터량이 많다보니..index설정도 생각해야할거같은데ㅜㅜ

 

1. member 테이블의  attributes

mem_num, mem_id, mem_residentno, mem_state

 

2. product 테이블의  attributes

prod_num,prod_name,prod_price

 

3. order_info 테이블의 attributes

ord_info_num,ord_mem_id,ord_product,ord_message

 

4. order_prod 테이블의 attributes

ord_num, ord_info_num, ord_prod_num

 

테이블과 각 attribute의 관계 :

member.mem_id = order_info.ord_mem_id

order_info.ord_info_num = order_prod.ord_info_num

order_prod.ord_prod_num = product.prod_num

제품명

10대 이하

20대 

30대 

40대 이상 

 제품 1

 ---

 ---

 ---

 ---

 제품 2

 ---

 ---

 ---

 ---

 제품 3

 ---

 ---

 ---

 ---

 

위 와 같은 결과를 얻으려고하는데..

각 연령 별로 제품(상품)들에 대하여 통계를 구하려고합니다...

질의를 어떻게해야 결과가 나올까요...

일주일 내내 이것만 하고있는데...ㅜㅜ join, select 뭘 해봐도 안되서 질문올립니다.

 

===============================================================

select y.prod_hname,t.age10,t.age20,t.age30,t.age40

from ( select ord_prod_num as prod_id,sum(case when (year(now())-1900)-substring(c.mem_residentno,1,2) > 20 then 1 else 0 end) as age10,
                       sum(case when (year(now())-1900)-substring(c.mem_residentno,1,2) between 20 and 29 then 1 else 0 end) as age20,
                       sum(case when (year(now())-1900)-substring(c.mem_residentno,1,2) between 30 and 39 then 1 else 0 end) as age30,
                       sum(case when (year(now())-1900)-substring(c.mem_residentno,1,2) >= 40 then 1 else 0 end) as age40

            from order_prod_list a

            inner join order_Info_list b

            on a.ord_info_num = b.ord_info_num

            inner join member c

            on b.ord_mem_id = c.mem_id

            group by ord_prod_num order by ord_prod_num

           ) as t

 inner join Product as y

 on (t.prod_id = y.prod_num) order by t.prod_id asc

==================================================================

위와 같이 쿼리를 만들어보니 결과는 제대로 나왔으나... 시간이 너무 오래걸립니다. 데이터량이 워낙 많아서...

 

explain 을 사용하여 결과를보니...index를 타지 않는거같은데...

index를 타려면 어떻게해야할까요 ? 그리고 어떻게 인덱스를걸어줘야할지 상세하게 설명부탁드립니다.ㅜ

mysql..

 

No. Subject Author Date Views
7052 시스템 카탈로그 임의 수정이 안되네요.. [2] Larry 2013.08.01 4167
7051 웹사이트의 CharSet 설정과 Database의 Collation ... 그 외 상관 관계... Larry 2013.07.31 8363
7050 쿼리문 질문 [6] 황영식_314681 2013.07.30 4461
7049 선배님들 프로시저(락 관련) 조언좀 부탁드립니다... [3] alima 2013.07.30 6400
7048 xml 데이터형의 컬럼을 select 하는데.. [3] 강승생 2013.07.30 4592
7047 해외 서버에 웹사이트를 이전 시켰는데 DB에서 불러온 한글만 깨져요.. [12] Larry 2013.07.26 10371
7046 asp로 ms-sql 2005의 타이틀 컬럼 앞 10자리만 수정시... [2] 다크나인 2013.07.26 6280
7045 SQL DB를 활용하여 회사 프로그램을 작성해야하는데요 MFC 와 C# [2] 씨쎔 2013.07.26 4532
7044 테이블안에 중복 아이디에 순번을 먹이고 싶습니다... [1] dcman 2013.07.25 5008
7043 cte를 이용 이중트리구조를 출력하려합니다. [1] gtm100 2013.07.25 5140
7042 MsDtsSrvr.exe 오류가 나네요 곰팡이 2013.07.25 7851
7041 SqlServer 2012 인스탄스 제거 질문드립니다. [2] 힘내라장코치 2013.07.25 4943
7040 mssql 7 desktop 버젼 구할 방법이 없을까요 ? [1] 어둠별빛 2013.07.24 4461
» 쿼리 수정 설명 부탁드립니다. [2] rx프로그래머rx 2013.07.24 4485
7038 키워드 검색을 하는데, 다중 키워드를 and 조건으로 검색하는 경우 [4] 더따뜻한 2013.07.24 6883
7037 데이터의 날짜보다 빠른 모든 6개월 내의 데이터와 조인 질문 [1] 슈팅스타 2013.07.24 4693
7036 해외 호스팅 서버쪽에 SQL2005 서버로 이전 작업 문의드립니다. [2] Larry 2013.07.23 5213
7035 쿼리 고수님들께 문의좀 드립니다. ^^ [2] 남자나무 2013.07.23 5546
7034 mdf 파일 손상히 tail log 백업 방법 [2] Tommy Hilfi 2013.07.23 5499
7033 질문드립니다 [1] 잉잉 2013.07.23 4776





XE Login