2012-06-11 3 views
7

SELECT 및 조항에 저장된 함수 호출을 최적화? 또는 MySQL이 장면의 뒤에서 그러한 최적화를 수행합니까? 실제로 함수는 결정 론적이라고 선언됩니다.나는 다음과 같은 구조의 SQL 쿼리가

함수 params가 부분적으로 선택된 테이블의 열에 있음을 언급해야합니다. 이것을 반영하기 위해 예제를 약간 변경했습니다.

+0

인가'param' 테이블의 열 또는 매개 변수? –

답변

7

한 빨리 수행 재 작성 및 테스트 :

MySQL의에서
SELECT *, storedfunc(param, table.column) AS f 
FROM table 
WHERE storedfunc(param, table.column) < value 
ORDER BY f ; 

SELECT * 
FROM 
    (SELECT *, storedfunc(param, table.column) AS f 
    FROM table 
) AS tmp 
WHERE f < value 
ORDER BY f ; 

, 당신도 (:하지 표준 SQL 구문 경고) :이처럼 쓸 수

SELECT *, storedfunc(param, table.column) AS f 
FROM table 
HAVING f < value 
ORDER BY f ; 
+0

이상하게도 나중에 시도했지만 MySQL에 오류가 표시되었습니다. 다시 시도 할 것입니다. – Stan

+0

시도한 내용을 정확하게 게시 할 수 있습니까? 그리고 오류 메시지는 무엇입니까? –

+0

사실,'where' 절에서 f를 시도했지만'having'이 아니라, 이것이 오류를 생성 한 이유입니다. 어쨌든, MySQL은'결정론적인 '함수 선언 때문에 자동으로 최적화를 수행합니까? – Stan