Compatibilita' MySQL 8.0: rimosso CREATE INDEX IF NOT EXISTS, rimosso DELIMITER per trigger (incompatibile con pipe stdin). Migration semplificata con solo CREATE INDEX e ALTER TABLE IF NOT EXISTS. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
2.5 KiB
SQL
41 lines
2.5 KiB
SQL
-- ============================================================
|
|
-- NIS2 Agile - Migration 006: Security & Performance Improvements
|
|
-- Data: 2026-02-20
|
|
-- NOTA: Eseguire una sola volta. I CREATE INDEX falliscono se gia' esistono.
|
|
-- ============================================================
|
|
|
|
-- ── 1. Indici performance su incidents (NIS2 Art.23 deadlines) ────────────
|
|
CREATE INDEX idx_inc_org_status ON incidents (organization_id, status);
|
|
CREATE INDEX idx_inc_org_significant ON incidents (organization_id, is_significant);
|
|
CREATE INDEX idx_inc_early_warning ON incidents (organization_id, early_warning_due);
|
|
CREATE INDEX idx_inc_notification ON incidents (organization_id, notification_due);
|
|
CREATE INDEX idx_inc_final_report ON incidents (organization_id, final_report_due);
|
|
|
|
-- ── 2. Indici performance su risks ────────────────────────────────────────
|
|
CREATE INDEX idx_risks_org_status ON risks (organization_id, status);
|
|
CREATE INDEX idx_risks_org_score ON risks (organization_id, inherent_risk_score);
|
|
|
|
-- ── 3. Indici performance su audit_logs ───────────────────────────────────
|
|
CREATE INDEX idx_audit_org_ts ON audit_logs (organization_id, created_at);
|
|
CREATE INDEX idx_audit_entity ON audit_logs (entity_type, entity_id);
|
|
|
|
-- ── 4. Soft delete su tabelle critiche ────────────────────────────────────
|
|
ALTER TABLE risks
|
|
ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMP NULL DEFAULT NULL AFTER updated_at;
|
|
|
|
ALTER TABLE policies
|
|
ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMP NULL DEFAULT NULL AFTER updated_at;
|
|
|
|
ALTER TABLE suppliers
|
|
ADD COLUMN IF NOT EXISTS deleted_at TIMESTAMP NULL DEFAULT NULL AFTER updated_at;
|
|
|
|
-- Indici per soft delete
|
|
CREATE INDEX idx_risks_not_deleted ON risks (organization_id, deleted_at);
|
|
CREATE INDEX idx_policies_not_deleted ON policies (organization_id, deleted_at);
|
|
|
|
-- ── 5. Indice su refresh_tokens per performance cleanup ───────────────────
|
|
CREATE INDEX idx_refresh_expires ON refresh_tokens (user_id, expires_at);
|
|
|
|
-- ── Fine migration ────────────────────────────────────────────────────────
|
|
SELECT 'Migration 006 completed' AS status;
|