사설 토토 사이트 생성이름( 절차 =func_name[, LEFTARG =유형1] [, RIGHTARG =유형2]
[, 정류자 =com_op] [, NEGATOR =neg_op]
[, 제한 =res_proc] [, JOIN =join_proc]
[, 해시 ] [, SORT1 =left_sort_op] [, SORT2 =right_sort_op ] )
정의할 사설 토토 사이트입니다. 허용되는 내용은 아래를 참조하세요. 문자.
이 사설 토토 사이트를 구현하는 데 사용되는 함수입니다.
사설 토토 사이트의 왼쪽 인수 유형(인 경우) 어떤. 이 옵션은 왼쪽 단항의 경우 생략됩니다. 사설 토토 사이트.
사설 토토 사이트의 오른쪽 인수 유형, 있다면. 이 옵션은 오른쪽 단항의 경우 생략됩니다. 사설 토토 사이트.
이 사설 토토 사이트의 정류자.
이 사설 토토 사이트의 부정자입니다.
다음에 대한 제한 선택성 추정 기능 이 연산자.
이를 위한 조인 선택 추정기 기능 사설 토토 사이트.
이 연산자가 해시 조인을 지원할 수 있음을 나타냅니다.
이 연산자가 병합 조인을 지원할 수 있는 경우, 이것의 왼쪽 데이터 유형을 정렬하는 연산자 연산자.
이 연산자가 병합 조인을 지원할 수 있는 경우, 오른쪽 데이터 유형을 정렬하는 연산자 연산자.
사설 토토 사이트 생성새 사설 토토 사이트를 정의합니다.이름. 정의하는 사용자 운영자가 소유자가 됩니다.
운영자이름은 최대 NAMEDATALEN-1(기본적으로 31자) 문자의 시퀀스 다음 목록:
+ - * / < = ~ ! @ # % ^ & | ` ? $
"$"는 단일 문자 연산자로 정의될 수 없습니다. 다중 문자 연산자의 일부일 수 있지만 이름.
"--" 및 "/*"는 연산자 이름 어디에도 나타날 수 없습니다. 댓글의 시작으로 간주되기 때문입니다.
다중 문자 연산자 이름은 "+" 또는 "-"로 끝날 수 없습니다. 이름에 다음 중 하나 이상이 포함되어 있지 않은 경우 문자:
~ ! @ # % ^ & | ` ? $
참고:SQL 표준이 아닌 연산자로 작업할 때 이름을 사용하는 경우 일반적으로 인접한 연산자를 구분해야 합니다. 모호함을 피하기 위해 공백을 사용합니다. 예를 들어 다음과 같은 경우 "@"이라는 왼쪽 단항 연산자를 정의했습니다. 쓸 수 없습니다.X*@Y; 당신은 작성해야합니다X* @Y이를 보장하기 위해포스트그레스두 개의 연산자 이름으로 읽습니다. 하나도 아니야.
연산자 "!="는 입력 시 "<"에 매핑되므로 다음은 두 이름은 항상 동일합니다.
LEFTARG 및 RIGHTARG 중 적어도 하나는 정의되어야 합니다. 에 대한 이진 사설 토토 사이트는 둘 다 정의해야 합니다. 오른쪽 단항의 경우 사설 토토 사이트의 경우 LEFTARG만 정의해야 하며 왼쪽 단항의 경우 사설 토토 사이트는 RIGHTARG만 정의해야 합니다.
그func_name절차를 수행해야 합니다. 이전에 다음을 사용하여 정의되었습니다.만들기 기능그리고 올바른 수의 수를 허용하도록 정의되어야 합니다. 표시된 유형의 인수(1개 또는 2개)입니다.
정류자 사설 토토 사이트가 존재하는 경우 이를 식별해야 하므로 그포스트그레스반전할 수 있습니다. 원하는 경우 피연산자의 순서입니다. 예를 들어, 운영자 보다 작은 면적, <<<, 아마도 정류자가 있을 것입니다. 연산자,보다 큰 영역, . 따라서 쿼리는 최적화 프로그램은 다음을 자유롭게 변환할 수 있습니다.
상자 '((0,0), (1,1))' MYBOXES.description에
MYBOXES.description <<< 상자 '((0,0), (1,1))'
이것은 실행 코드가 항상 후자를 사용하도록 허용합니다 쿼리 최적화 프로그램을 표현하고 단순화합니다.
마찬가지로, 부정 연산자가 있는 경우 다음과 같아야 합니다. 확인되었습니다. 다음과 같이 면적이 같음 연산자 ===가 존재한다고 가정합니다. 면적이 동일하지 않은 경우, !==. 부정자 링크는 쿼리를 허용합니다 단순화를 위한 최적화 프로그램
NOT MYBOXES.description === 상자 '((0,0), (1,1))'에
MYBOXES.description !== 상자 '((0,0), (1,1))'
정류 연산자 이름이 제공되면,포스트그레스카탈로그에서 검색합니다. 만약에 발견되었지만 아직 정류자 자체가 없는 경우 정류자의 항목은 새로 생성되도록 업데이트됩니다. 연산자를 정류자로 사용합니다. 이는 부정자에게도 적용됩니다. 이는 두 연산자의 정의를 허용하기 위한 것입니다. 정류자 또는 서로의 부정자. 첫 번째 연산자 정류자나 부정자 없이 정의되어야 합니다(예: 해당). 두 번째 연산자가 정의되면 첫 번째 연산자의 이름을 지정합니다. 정류자 또는 부정자로. 첫 번째는 측면으로 업데이트됩니다 효과. (Postgres 6.5부터는 둘 다 사용하는 것도 가능합니다. 연산자는 서로를 참조합니다.)
HASHES, SORT1 및 SORT2 옵션이 지원됩니다. 조인을 수행하는 쿼리 최적화 프로그램입니다.포스트그레항상 조인을 평가할 수 있습니다(예: 로 구분된 두 개의 튜플 변수가 있는 절 처리 부울을 반환하는 사설 토토 사이트) 반복 치환 [웡76]. 게다가포스트그레[SHAP86] 라인을 따라 해시 조인 알고리즘을 사용할 수 있습니다. 그러나 이 전략이 적용 가능한지 여부를 알아야 합니다. 는 현재 해시 조인 알고리즘은 다음과 같은 연산자에만 적합합니다. 평등 테스트를 나타냅니다. 또한 데이터 유형의 동일성 유형 표현의 비트 동일성을 의미해야 합니다. (예를 들어, 사용되지 않는 비트를 포함하는 데이터 유형 동등성 테스트 문제는 해시 조인될 수 없습니다.) HASHES 플래그는 해시 조인이 안전하게 수행될 수 있음을 쿼리 최적화 프로그램에 나타냅니다. 이 연산자와 함께 사용하세요.
마찬가지로 두 개의 정렬 사설 토토 사이트는 쿼리에 나타냅니다. 병합 정렬이 사용 가능한 조인 전략인지 여부와 어떤 것이 있는지 최적화합니다. 두 피사설 토토 사이트 클래스를 정렬하려면 사설 토토 사이트를 사용해야 합니다. 정렬 사설 토토 사이트는 항등 사설 토토 사이트에만 제공되어야 하며, 왼쪽과 오른쪽에 대해 작음 사설 토토 사이트를 참조해야 합니다. 각각 측면 데이터 유형입니다.
다른 조인 전략이 실용적이라고 판단되면,포스트그레스변경됩니다 이를 사용하려면 최적화 프로그램과 런타임 시스템이 필요합니다. 연산자 정의 시 추가 사양입니다. 다행스럽게도 연구 커뮤니티는 새로운 조인 전략을 고안했습니다. 드물게 사용자 정의 조인의 일반성이 추가되었습니다. 전략은 관련된 복잡성만큼 가치가 있다고 느껴지지 않았습니다.
RESTRICT 및 JOIN 옵션은 쿼리 최적화 프로그램을 지원합니다. 결과 크기 추정. 다음 형식의 절인 경우:
MYBOXES.description <<< 상자 '((0,0), (1,1))'조건에 존재하는 경우포스트그레다음의 비율을 추정해야 할 수도 있습니다. 조항을 만족하는 MYBOXES의 인스턴스입니다. 함수res_proc등록되어 있어야 합니다. 함수(이미 다음을 사용하여 정의되었음을 의미함)함수 생성)은 다음의 인수를 허용합니다. 데이터 유형을 수정하고 부동 소수점 숫자를 반환합니다. 쿼리 옵티마이저는 단순히 이 함수를 호출하고 매개변수를 전달합니다.((0,0), (1,1))그리고 결과를 곱합니다 관계 크기를 기준으로 예상 인스턴스 수를 얻습니다.
마찬가지로, 연산자의 피연산자 둘 다에 다음이 포함된 경우 인스턴스 변수의 경우 쿼리 최적화 프로그램은 인스턴스 변수의 크기를 추정해야 합니다. 결과 조인. Join_proc 함수는 다른 것을 반환합니다. 부동소수점 수 예상 계산에 관련된 두 테이블의 카디널리티 결과 크기.
함수 간의 차이점
my_procedure_1 (MYBOXES.description, 상자 '((0,0), (1,1))')그리고 운영자
MYBOXES.description === 상자 '((0,0), (1,1))'그렇군요포스트그레시도 연산자를 최적화하고 인덱스를 사용하여 제한하기로 결정할 수 있습니다. 운영자가 관련된 경우 검색 공간. 그러나 기능을 최적화하려고 시도하고 무차별적으로 수행됩니다. 힘. 게다가 함수는 인수를 얼마든지 가질 수 있지만 연산자는 1~2개로 제한됩니다.