Els índexs són una part fonamental de l'optimització de bases de dades. Ajuden a accelerar les consultes permetent un accés més ràpid a les dades. En aquesta secció, explorarem què són els índexs, com funcionen i com es poden utilitzar per millorar el rendiment de les consultes SQL.

Què és un índex?

Un índex és una estructura de dades que millora la velocitat de les operacions de recuperació de dades en una taula de base de dades. Els índexs es creen sobre una o més columnes d'una taula i permeten a la base de dades trobar ràpidament les files que compleixen amb determinats criteris de cerca.

Tipus d'índexs

  1. Índexs Bàsics:

    • Índexs únics: Asseguren que els valors de la columna indexada siguin únics.
    • Índexs no únics: Permeten valors duplicats a la columna indexada.
  2. Índexs Compostos:

    • Creats sobre múltiples columnes d'una taula.
  3. Índexs de Text Complets:

    • Utilitzats per a cerques de text complet en columnes de text.
  4. Índexs Clustered:

    • Reorganitzen les dades físiques de la taula per coincidir amb l'ordre de l'índex.
  5. Índexs No Clustered:

    • No alteren l'ordre físic de les dades de la taula, sinó que creen una estructura separada que apunta a les dades.

Com funcionen els índexs?

Els índexs funcionen de manera similar a l'índex d'un llibre. Quan es crea un índex en una columna, la base de dades crea una estructura que permet accedir ràpidament a les files que contenen els valors de la columna indexada. Això redueix el nombre de files que la base de dades ha de revisar per trobar les dades sol·licitades.

Exemple d'Índex

Suposem que tenim una taula clients amb les següents columnes:

id nom cognom edat ciutat
1 Joan Pérez 30 Barcelona
2 Maria García 25 Madrid
3 Lluís Martínez 35 València
4 Anna López 28 Sevilla

Si creem un índex sobre la columna cognom, la base de dades podrà trobar ràpidament tots els clients amb un determinat cognom.

CREATE INDEX idx_cognom ON clients (cognom);

Beneficis dels índexs

  1. Millora del Rendiment de les Consultes:

    • Els índexs redueixen el temps de resposta de les consultes, especialment en taules grans.
  2. Accés Ràpid a les Dades:

    • Permeten accedir ràpidament a les files que compleixen amb els criteris de cerca.
  3. Optimització de Consultes Complexes:

    • Els índexs compostos poden optimitzar consultes que filtren per múltiples columnes.

Desavantatges dels índexs

  1. Espai d'Emmagatzematge:

    • Els índexs ocupen espai addicional a la base de dades.
  2. Temps Addicional en Operacions DML:

    • Les operacions d'inserció, actualització i eliminació poden ser més lentes, ja que els índexs s'han d'actualitzar.
  3. Manteniment:

    • Els índexs requereixen manteniment per assegurar-se que es mantenen eficients.

Exercici Pràctic

Exercici 1: Crear un índex

Crea un índex sobre la columna ciutat de la taula clients.

CREATE INDEX idx_ciutat ON clients (ciutat);

Exercici 2: Consultar amb índex

Executa una consulta per trobar tots els clients de "Barcelona" i observa la millora en el temps de resposta.

SELECT * FROM clients WHERE ciutat = 'Barcelona';

Solució

-- Crear l'índex
CREATE INDEX idx_ciutat ON clients (ciutat);

-- Consultar amb l'índex
SELECT * FROM clients WHERE ciutat = 'Barcelona';

Resum

En aquesta secció, hem après què són els índexs, com funcionen i com es poden utilitzar per millorar el rendiment de les consultes SQL. També hem vist els beneficis i desavantatges dels índexs i hem practicat la creació i ús d'índexs en una taula de base de dades. En la següent secció, explorarem com crear i gestionar índexs de manera més detallada.

Curs de SQL

Mòdul 1: Introducció a SQL

Mòdul 2: Consultes bàsiques de SQL

Mòdul 3: Treballar amb múltiples taules

Mòdul 4: Filtratge avançat de dades

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats