En aquest tema, explorarem les millors pràctiques per escriure consultes SQL eficients, mantenibles i segures. Aquestes pràctiques són essencials per garantir que les teves aplicacions funcionin de manera òptima i que les dades es gestionin de manera segura i coherent.

  1. Escriure consultes clares i llegibles

1.1. Utilitza noms descriptius per a les taules i columnes

  • Exemple:
    SELECT first_name, last_name, email
    FROM customers;
    
    En lloc de:
    SELECT fn, ln, em
    FROM cust;
    

1.2. Utilitza majúscules per a les paraules clau SQL

  • Exemple:
    SELECT first_name, last_name
    FROM customers
    WHERE city = 'Barcelona';
    

1.3. Indenta les consultes llargues per millorar la llegibilitat

  • Exemple:
    SELECT first_name, last_name, email
    FROM customers
    WHERE city = 'Barcelona'
      AND age > 30
    ORDER BY last_name;
    

  1. Optimització de consultes

2.1. Utilitza índexs adequadament

  • Els índexs poden millorar significativament el rendiment de les consultes, però també poden afectar negativament el rendiment de les operacions d'inserció, actualització i eliminació.
  • Exemple:
    CREATE INDEX idx_customers_city ON customers(city);
    

2.2. Evita les subconsultes innecessàries

  • Les subconsultes poden ser lentes. Utilitza JOINs quan sigui possible.
  • Exemple:
    -- Subconsulta
    SELECT first_name, last_name
    FROM customers
    WHERE customer_id IN (SELECT customer_id FROM orders WHERE order_date > '2023-01-01');
    
    -- JOIN
    SELECT c.first_name, c.last_name
    FROM customers c
    JOIN orders o ON c.customer_id = o.customer_id
    WHERE o.order_date > '2023-01-01';
    

2.3. Utilitza LIMIT per restringir el nombre de files retornades

  • Això és especialment útil en aplicacions web per evitar carregar massa dades alhora.
  • Exemple:
    SELECT first_name, last_name
    FROM customers
    ORDER BY last_name
    LIMIT 10;
    

  1. Seguretat en SQL

3.1. Evita les injeccions SQL

  • Utilitza consultes preparades i paràmetres en lloc de concatenar cadenes.
  • Exemple en PHP:
    $stmt = $pdo->prepare('SELECT first_name, last_name FROM customers WHERE email = :email');
    $stmt->execute(['email' => $email]);
    

3.2. Gestiona els permisos d'usuari adequadament

  • Assegura't que els usuaris només tinguin els permisos necessaris per a les seves tasques.
  • Exemple:
    GRANT SELECT, INSERT ON customers TO 'app_user';
    

  1. Mantenibilitat del codi

4.1. Documenta les teves consultes

  • Afegeix comentaris per explicar consultes complexes.
  • Exemple:
    -- Selecciona els clients que han fet una comanda en l'últim any
    SELECT first_name, last_name
    FROM customers c
    JOIN orders o ON c.customer_id = o.customer_id
    WHERE o.order_date > '2022-01-01';
    

4.2. Utilitza vistes per a consultes complexes

  • Les vistes poden simplificar l'accés a dades complexes i millorar la llegibilitat del codi.
  • Exemple:
    CREATE VIEW recent_orders AS
    SELECT c.first_name, c.last_name, o.order_date
    FROM customers c
    JOIN orders o ON c.customer_id = o.customer_id
    WHERE o.order_date > '2022-01-01';
    

  1. Consells addicionals

5.1. Evita les operacions costoses en les clàusules WHERE

  • Les funcions en les clàusules WHERE poden impedir l'ús d'índexs.
  • Exemple:
    -- Evita
    SELECT * FROM orders WHERE YEAR(order_date) = 2023;
    
    -- Millor
    SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
    

5.2. Utilitza transaccions per a operacions múltiples

  • Les transaccions garanteixen que les operacions múltiples es completin de manera atòmica.
  • Exemple:
    BEGIN TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
    COMMIT;
    

Conclusió

Seguint aquestes millors pràctiques, podràs escriure consultes SQL més eficients, segures i fàcils de mantenir. Recorda que la claredat i la seguretat són tan importants com el rendiment. Practica aquestes tècniques en els teus projectes diaris per convertir-te en un expert en SQL.

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