22 lines
866 B
Markdown
22 lines
866 B
Markdown
# 0001 — Indice dei file in un DB SQLite locale
|
|||
|
|
|
||
|
|
**Stato:** accettata
|
||
|
|
|
||
|
|
## Contesto
|
||
|
|
|
||
|
|
La share `X:\` contiene centinaia di migliaia di file (ordine di ~200k righe indicizzate).
|
||
|
|
Cercare un codice direttamente sul disco di rete a ogni distinta è lento: il costo è dominato
|
||
|
|
dalla latenza di rete.
|
||
|
|
|
||
|
|
## Decisione
|
||
|
|
|
||
|
|
Scansionare la share una volta in un DB SQLite locale (`cad_index.db`) e interrogare quello.
|
||
|
|
L'aggiornamento è incrementale (confronto su percorso, dimensione e data), la vista
|
||
|
|
`files_ultima_versione` usa `ROW_NUMBER()` e non un self-join con `GROUP BY`.
|
||
|
|
|
||
|
|
## Conseguenze
|
||
|
|
|
||
|
|
- Le ricerche sono istantanee e non richiedono la share (la copia sì).
|
||
|
|
- L'indice può essere vecchio: per questo la fase 2 ha "Verifica presenza".
|
||
|
|
- Il DB è rigenerabile, quindi non è tracciato in git.
|
||
|
|
- Schema e criteri di pareggio: [`../db-cad-index.md`](../db-cad-index.md).
|