PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Indeksowanie SQL na varchar

Klawisze na VARCHAR kolumny mogą być bardzo długie, co skutkuje mniejszą liczbą rekordów na stronę i większą głębią (więcej poziomów w B-Tree ). Dłuższe indeksy zwiększają również współczynnik braku pamięci podręcznej.

Ile łańcuchów w średniej jest odwzorowywane na każdą liczbę całkowitą?

Jeśli jest ich stosunkowo niewiele, możesz utworzyć indeks tylko na kolumnie liczb całkowitych i PostgreSQL wykona dokładne filtrowanie rekordów:

CREATE INDEX ix_mytable_assoc ON mytable (assoc);

SELECT  floatval
FROM    mytable
WHERE   assoc = givenint
        AND phrase = givenstring

Możesz również rozważyć utworzenie indeksu na hashach ciągu:

CREATE INDEX ix_mytable_md5 ON mytable (DECODE(MD5(phrase), 'HEX'));

SELECT  floatval
FROM    mytable
WHERE   DECODE(MD5(phrase), 'HEX') = DECODE(MD5('givenstring'), 'HEX')
        AND phrase = givenstring -- who knows when do we get a collision?

Każdy skrót to tylko 16 bajtów, więc klucze indeksu będą znacznie krótsze, zachowując niemal idealnie selektywność.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj wyraźną sumę połączonej kolumny tabeli

  2. plik wejściowy wygląda na zrzut w formacie tekstowym. Proszę użyć psql

  3. Wdrażanie i konserwacja PostgreSQL z Ansible

  4. Szybkie wyszukiwanie w pobliżu użytkowników za pomocą PostGIS

  5. Znajdź nazwę hosta w postgresql