====== Checklist Algoritmi SQL ====== **Versione:** 2.1\\ **Ambito:** Stored Procedure, View, migrazioni e logica query su MS SQL / MySQL / SQLite. ===== DEVE ===== * [ ] **Parametrizzazione**: nessuna concatenazione stringa per comandi SQL; tipizzazione rigorosa * [ ] **Assunzioni schema** documentate (Collation, Case Sensitivity, semantica Null) * [ ] **Transazioni** esplicite quando necessarie; Isolation Level giustificato * [ ] **Idempotenza**: migrazioni e script setup possono essere eseguiti in sicurezza (o indicare chiaramente non-idempotenza) * [ ] **Concorrenza**: comportamento locking considerato (Deadlock, Long Lock, Escalation) * [ ] **Strategia indici** validata; modifiche hanno razionale e note impatto * [ ] **Query Plan** revisionati per percorsi critici (MS SQL: Actual Plan; MySQL: EXPLAIN; SQLite: Query Plan) * [ ] **Paginazione** usa ordinamento deterministico (nessun "OFFSET senza ORDER BY") * [ ] **Semantica Date/Time** esplicita (UTC vs Local; conversioni fuso orario) * [ ] **Gestione errori** mappa errori DB a errori applicazione sicuri (nessun leak schema) ===== DOVREBBE ===== * [ ] Evitare RBAR/Cursor dove soluzioni set-based disponibili (salvo giustificazione) * [ ] Usare set risultati limitati; evitare "SELECT *" in interfacce pubbliche * [ ] Fornire dataset test e query regressione per edge case ===== BUONO ===== * [ ] Documentare differenze specifiche engine (es. LIMIT/OFFSET, supporto RETURNING, funzioni JSON) * [ ] Fornire baseline prestazioni per tabelle alto volume ---- //Versione: 2.1 (Split)//\\ //Autore: Wolfgang van der Stille// Torna a [[.:start|Checklist Stack]] | [[..:start|Checklist di Revisione]] ~~DISCUSSION:off~~