Cerca hashing

La cerca hashing és un mètode d’accés basat en una funció de dispersió que permet localitzar registres en temps constant. A les bases de dades relacionals s’utilitza en índexs hash, especialment eficients en consultes d’igualtat.

« Back to Glossary Index

La cerca hashing és un mètode d’accés i recuperació de dades basat en una funció de dispersió (hash function). Aquesta funció transforma la clau de cerca (com un identificador o un NIF) en un valor numèric que apunta directament a una posició dins d’una taula hash.

  • El temps mitjà de cerca és O(1), és a dir, constant.
  • Si dues claus diferents generen el mateix hash (col·lisió), es resol amb tècniques com llistes enllaçades, open addressing o rehashing.

En el context de Bases de Dades Relacionals

  • Alguns SGBD permeten crear índexs hash (per exemple, PostgreSQL).
  • Són especialment útils en consultes d’igualtat (WHERE id = 1500), ja que la funció hash condueix directament a la posició esperada.
  • Limitació: no conserven l’ordre dels valors, per això no són eficients en cerques per intervals (BETWEEN, >, <) ni per operacions d’ordenació.
  • A la pràctica, molts motors de BDD prefereixen els índexs B-Tree, que combinen eficiència i flexibilitat.

Exemple senzill

Tenim la clau: NIF = "12345678A".

  1. La funció hash calcula: hash("12345678A") = 42
  2. La cerca va directament a la posició 42 de la taula hash.
  3. Si el registre hi és → s’ha trobat
  4. Si hi ha col·lisió (p. ex. hash("98765432B") = 42), cal una estratègia de resolució.

Comparació amb la cerca dicotòmica

CaracterísticaCerca dicotòmica (B-Tree)Cerca hashing
Complexitat mitjanaO(log n)O(1)
Necessita dades ordenades✔ Sí✘ No
Cerca per intervals✔ Eficaç✘ Ineficaç
Consultes d’igualtatBonaExcel·lent
Ús habitual a BDDÍndex B-Tree (per defecte)Índex hash (casos concrets)
« Back to Glossary Index