database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 28189 게시물 읽기
No. 28189
엄청나게 느린 쿼리문 ..ㅜ.ㅜ 방법을 모르겠습니다...
작성자
어린왕자
작성일
2009-05-06 12:33
조회수
5,882

거의 암것도 모르는.. 초보인데

아래같은 쿼리문을 만들게 됐습니다.

구조는

name_list 는

no wr_num sise_date mem_id adr wr_subject parent mem_name today_price opt1 opt2


price_list 는

idx code1 code2 price yesterday_price date year month day


문제는

같은 이름의 데이터에 하루에 한번씩 데이터가 입력됩니다.

name_list 의 데이터는 거의 변경이 없고 300개 정도 됩니다.

대신에 price_list에는 매일 또는 원하는날에 데이터가 입력되는데 name_list 에 있는 명단의 숫자만큼 입력됩니다

그래서 현재 2만개정도 되구요..

예상은 했지만.. 불러오는 속도가 느려지더라구요.ㅜ.ㅜ

불러올때 price의 있는값을 두번불러야 하는데 한번은 가장 최근날짜값 한번은 가장최근날짜바로이전값..입니다.


이걸 다른 방식으로 입력하는것도 시도를 해봤는데 입력 삭제 구조상 그게 안되더라구요.. 한개가 수정되면 이전값까지 다 수정될수도 없고..

여러문제로 한 필드의 값을 두번 불러오는게 답이라는 결론입니다.


방식은 price_list의 가장 최신 날짜값이 있는 데이터의 name_list를 뽑습니다

그 리스트의 코드값(두가지 코드값이 있어야 합니다..)을 기준으로 price_list에서 뽑아오는겁니다...


$sql = "select * from  name_list a, price_list b

                 where a.wr_num=b.code2

                 and a.parent=b.code1

                 and b.date = '$last_date'

                 and a.opt2 = 0

                  order by mem_name asc

                 ";

$result = mysql_query($sql);

위 코드로 name_list  price_list 의 코드값 그리고 최근날짜값을 추출


반복문으로 아래처럼 돌려서

최근날짜값의 바로 이전값을 추출

$tmp_price = "select * from price_list

                 where code1 = '$code1'

                 and code2 = '$code2'

                 and date < '$last_date'

                 order by date DESC limit 1";


그래서 표시를 할때


이름 코드1 코드2 가격1(최근날짜값) 가격2(최근날짜값의 이전날짜값)

이렇게 표시를 하고 있습니다...


속도문제를 분명 개선해야 할거 같은데..

DB를 어떻게 조정하면 좋아질까요..


먼가 제가 설명을 못해 뜬구름 잡는듯한 질문같은데.. 부탁드리겠습니다...

이 글에 대한 댓글이 총 1건 있습니다.

일단 테이블 스키마와 index 에 대한 정보가 너무 힘들게 나와있어서 이해가 힘드네요..;;
테이블 스키마와 index 정보에 대해 정확히 알려주시고요.
select 쿼리 이전에 explain 을 붙여서 쿼리하면 실행계획이 나옵니다. 그것도 첨부하여 주시면 좋겠네요
 ex) explain select * from .....

또한 쿼리가 늦는것이 아니라는 생각도 듭니다. 조인하는 두개 테이블이 300개 20000개 정도라고 하셨는데 그정도 테이블을 조인해봤자 느리다고 생각할 정도로 오래걸리진 않을 것 같습니다. 따라서 쿼리 결과를 받아서 처리하는 어플리케이션 쪽에 부하가 걸릴만한 요소가 있지는 않은지 살펴보는 것도 좋을것 같네요.

오아시셔(jjhoasis)님이 2009-05-06 16:16에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
28192mysql의 mysql.sock파일의 역활이 무엇인가요? [1]
김재명
2009-05-07
5484
28191duplicate 관련 질문입니다. [1]
초보
2009-05-07
5507
28190[JPG] 데이터베이스 테이블조인 관련 질문입니다.
lieliablue
2009-05-06
5041
28189엄청나게 느린 쿼리문 ..ㅜ.ㅜ 방법을 모르겠습니다... [1]
어린왕자
2009-05-06
5882
28187import 할때 에러납니다.
이준규
2009-05-05
5828
28185row의 값을 field로 변환 가능한가요?
박광기
2009-04-30
5485
28184현재 mssql 코딩 변환중입니다~~
유승현
2009-04-30
6101
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다