안녕하세요 오늘은 베스핀글로벌 D&A실 왕승준님이 작성해 주신 [MySQL] MySQL DETERMINISTIC에 대해 알아보겠습니다 궁금하신 부분이 있으시면 댓글을 달아주세요 🙂
Mysql Function/Procedure 에서 DETERMINISTIC ,NOT DETERMINISTIC 옵션이 미치는 영향
- MySQL Function, Procedure에서 동일한 입력 매개변수에 대해 항상 동일한 결과를 생성하는 경우 DETERMINISTIC 인 것으로 간주, 그렇지 않은 경우 NOT DETERMINISTIC 로 간주함
- Function, Procedure 정의에 DETERMINISTIC가 지정 되지 않은 경우 기본값은 NOT DETERMINISTIC 함수가 결정적임을 선언하려면 DETERMINISTIC명시적으로 지정해야 함
- NONDETERMINISTIC Functions : RAND(), UUID().
- NONDETERMINISTIC 함수는 상수 값을 생성하지 않기 때문에 옵티마이저는 인덱스 조회와 같이 적용할 수 있는 전략을 사용할 수 없음
- DETERMINISTIC/ NONDETERMINISTIC Functions 예제
- 사용자 정의 함수 예제
MySQL의 Stored procedure나 Function이 NOT DETERMINISTIC으로 정의되면, MySQL은 이 Stored routine의 결과값이 시시각각 달라진다고 가정하고, 비교가 실행되는 레코드마다 이 Stored routine을 매번 새로 호출해서 비교를 실행하게 됨
- 참고 :
- https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html
- https://dev.mysql.com/doc/refman/8.0/en/function-optimization.html
감사합니다 🙂
문의: info@bespinglobal.com | 대표번호: 02-1668-1280