SpatiaLite e gli indici

Come passare da oltre 2 minuti a 2 secondi di elaborazione query? Semplice, basta usare gli indici!!!

Abbiamo un database con due tabelle:

  1. studenti_verso_pescara semplice tabella senza geometria;
  2. centroidi_comuni_italia_2019 geo-tabella

La query sottostante impiega oltre 2 minuti

SELECT origine, destinazione, valore, makeline(a.geometry, b.geometry) AS geometry
FROM "studenti_verso_pescara" s
JOIN "centroidi_comuni_italia_2019" a ON (s.origine = CAST (a."PRO_COM" AS INTEGER))
JOIN "centroidi_comuni_italia_2019" b ON (s.destinazione = CAST (b."PRO_COM" AS INTEGER))
WHERE CAST(a."PRO_COM" AS INTEGER) != CAST(b."PRO_COM" AS INTEGER);

creo due indici nella tabella studenti_verso_pescara (campi origine e destinazione:

DROP INDEX IF EXISTS idx_origine;
CREATE INDEX idx_origine ON "studenti_verso_pescara"(origine);
DROP INDEX IF EXISTS idx_destinazione;
CREATE INDEX idx_destinazione ON "studenti_verso_pescara"(destinazione);

e la stessa query di prima restituisce l’output in meno di 3 secondi!!! (wow)


NOTE FINALI: gli indici sono nati proprio per velocizzare la ricerca e quindi un buon uso puo’ far risparmiare molto tempo. Le prestazioni dipendono anche dalle risorse del PC.


RIFERIMENTI

RINGRAZIAMENTI

  • Alessandro Furieri (papà di SpatiaLite)

DATABASE (prova tu)


Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!

Se il post vi è stato utile contribuite a mantenerlo aggiornato PayPal

6 pensieri su “SpatiaLite e gli indici

  1. Totó: le due lettere “a – s” inserite appena dopo il nome della tabella, sostituiscono il nome completo della tabella? wow! pensavo bisognasse segnalare questa opzione nella clausul FROM per forza e con AS… molto piú veloce cosí! ottimo!!

    Piace a 1 persona

      1. Stupendo! stav studiando un pó Postgis, e magari mi confondo di dialetto pure!
        Un dubbio: dentro la GUI, é possibile vedere il risultado geometrico? o meglio importare il tutto in QGIS ed eseguirlo lí? GRazie!

        Piace a 1 persona

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.