본문 바로가기
DataBase/MariaDB

[mariaDB] create or replace function

by 깐니 2022. 10. 28.

Definer와 Sql Security 옵션

 

 만약 definer 옵션 TEST_USER 로 설정하여,

CREATE OR REPLECE DEFINER=`TEST_USER`@`%` FUNCTION AAA(...

로 생성한 경우, 이 FUNCTION을 DROP할 수 있는 권한 또한 TEST_USER 임 

 

 

 

 

deterministic 옵션

 

MySQL의 Stored procedure나 Function이 NOT DETERMINISTIC으로 정의되면,
MySQL은 이 Stored routine의 결과값이 시시각각 달라진다고 가정하고,
비교가 실행되는 레코드마다 이 Stored routine을 매번 새로 호출해서 비교를 실행하게 된다.
즉, 함수 호출의 결과값이 Cache되지 않고, 비교되는 레코드 건수만큼 함수 호출이 발생한다.

하지만 DETERMINISTIC으로 생성시, MySQL에서 이 함수가 입력값이 동일하면 출력값은 항상 동일하다는 것을 인지하고 단 1번만 이 함수를 호출해서 결과값으로 a컬럼을 검색하게 된다.비교가 실행되는 레코드마다 이 Stored routine을 매번 새로 호출해서 비교를 실행하게 된다.

 

 

 

참조 : https://myinfrabox.tistory.com/232