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 27048 게시물 읽기
No. 27048
FUNCTION 쿼리 속도 차이
작성자
정현성
작성일
2007-09-21 11:50ⓒ
2007-09-21 11:55ⓜ
조회수
4,075

안녕하세요..


리눅스, MYSQL5.1 버전에서 FUNCTION 을 이용하면서 이상한 점이 있어 급 질문 올립니다..


아래 2개의 FUNCTION 은 같은 기능을 수행합니다.(단지 표현의 방법이 달라요)


차이라면.. 


FUNCITON-01 은  I_ITEMS_ID 라는 변수를 하나두고 ELEMENT_ID ='010100' 라고 강제 세팅을 한가고


FUNCITON-02 는 I_ITEMS_ID, I_ELEMENT_ID라는 변수를 2개 두고 ELEMENT_ID 를 변수처리 했습니다.



호출 방법은 아래와 같이 했는데요..

- FUNCTION1 호출 : SELECT FUNCTION1(ITEMS_ID) FROM ITEMS;          ---> 쿼리속도 : 0.5초

- FUNCTION2 호출 : SELECT FUNCTION1(ITEMS_ID, '010100') FROM ITEMS;---> 쿼리속도 : 5 초



문제는 호출 시 FUNCITON 의 쿼리 속도 차이가 10배 가 난다는 겁니다.

물론 인덱스 다 걸려 있구요.. EXPLAIN 해봐도 문제 없어요..


FUNCTION1 처럼 상수처리 하느냐.. FUNCTION2 처럼 변수처리 하느냐의 문제가 10배 이상의 쿼리 속도 차리를 

보인다는게 무슨 문제 때문인건지 알고 싶습니다.


좋은 답변 부탁 합니다.~~


------------------------------------------------------------------


CREATE DEFINER=`dlv2`@`%` 

FUNCTION `FUNCTION1`(I_ITEMS_ID CHAR(10)) RETURNS varchar(100) CHARSET euckr

BEGIN

  DECLARE O_ELEMENT_VALUE VARCHAR(100);

 SELECT ELEMENT_VALUE

    INTO O_ELEMENT_VALUE

    FROM TEXT_MD

   WHERE ITEMS_ID = I_ITEMS_ID

  AND ELEMENT_ID ='010100';

  RETURN O_ELEMENT_VALUE;

END;


------------------------------------------------------------------


CREATE DEFINER=`dlv2`@`%` 

FUNCTION `FUNCTION2`(I_ITEMS_ID CHAR(10), I_ELEMENT_ID CHAR(6)) RETURNS varchar(100) CHARSET euckr

BEGIN

  DECLARE O_ELEMENT_VALUE VARCHAR(100);

 SELECT ELEMENT_VALUE

    INTO O_ELEMENT_VALUE

    FROM TEXT_MD

   WHERE ITEMS_ID = I_ITEMS_ID 

   AND ELEMENT_ID = I_ELEMENT_ID;

  RETURN O_ELEMENT_VALUE;

END;

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

MSSQL 이나 ORACLE, 기타 다른  DBMS 의 경험이 있으신지 모르겠지만...
Mysql 에도 캐쉬가 있습니다.

즉.. 자주 사용하는 쿼리를 메모리에 올려 놓고,(정확히는 실행계획을.. ) 
그걸 가져다가 재사용하는 건데요..

이 캐쉬 부분이 좀 짜증나는 구석이 있습니다.

님께서 올려주신 방법으로만 판단하자면..
캐쉬 부분이 아닐까 하는데요...

관련문서 ( 메뉴얼에 나와 있습니다. ) 찾아 보시고, 해결 방법 찾으셨을 경우는 
꼭 글올려주심 감사하겠습니다.

박상우(neolinux)님이 2007-09-28 13:31에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27052log 파일을 다시 db에 넣을 수 있을까요? [1]
권혁주
2007-09-23
1992
27050mysql 5.0에서 mysqldump로 한글이 깨진 문제입니다. [1]
안명규
2007-09-21
2809
27049데이타가 20만건인 union 에서문제.. [1]
오랜만
2007-09-21
2386
27048FUNCTION 쿼리 속도 차이 [1]
정현성
2007-09-21
4075
27046migration 후 dump data 업로드(upload/import) 속도 느린 문제 [1]
지상훈
2007-09-21
3022
27045도와주세요 DB에서 안죽는 프로세스 ㅡㅡ;
윤조희
2007-09-20
2277
27044오라클에서 필요한 정보만 추출하여 mysql 로 입력하고자 할때 [1]
migrate
2007-09-20
1999
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다