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