PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL GIN индекс на масив от uuid

Забележка: този отговор е остарял, тъй като сега е част от стандартен PostgreSQL, вижте другия отговор на tbussmann (за който трябва да гласувате).

Оригинален отговор:

Това може да стане с помощта на следния клас оператори:

CREATE OPERATOR CLASS _uuid_ops DEFAULT 
  FOR TYPE _uuid USING gin AS 
  OPERATOR 1 &&(anyarray, anyarray), 
  OPERATOR 2 @>(anyarray, anyarray), 
  OPERATOR 3 <@(anyarray, anyarray), 
  OPERATOR 4 =(anyarray, anyarray), 
  FUNCTION 1 uuid_cmp(uuid, uuid), 
  FUNCTION 2 ginarrayextract(anyarray, internal, internal), 
  FUNCTION 3 ginqueryarrayextract(anyarray, internal, smallint, internal, internal, internal, internal), 
  FUNCTION 4 ginarrayconsistent(internal, smallint, anyarray, integer, internal, internal, internal, internal), 
  STORAGE uuid;

Кредити за това за това, че ме насочи в правилната посока.

Съответната документация е в Разширения за интерфейс към индекси , по-специално стратегията на оператора и номерата на функциите за GIN са описани там.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Прилагане на множество функции на прозорец върху един и същи дял

  2. Краен цикъл на функцията на Postgres и връщане на грешка

  3. Присъединете се към заявка за броене на generate_series() и извлечете нулеви стойности като '0'

  4. PostgreSQL имена на процеси в Solaris

  5. Обща продължителност на припокриващи се периоди с приоритет чрез изключване на самото припокриване