39 messaggi dal 19 settembre 2005
Buongiorno ragazzi,
sto implementando per un cliente un sistema per la gestione di un concorso con codici. Tutto funziona ma è assolutamente ingestibile a causa della lentezza.
Mi spiego meglio, cercando di sintetizzare al massimo
Nel Database(sql server express) ho una tabella con la bellezza di più di 100.000 codici univoci (campo string).
L'utente in fase di registrazione inserisce un codice.
Il sistema deve verificare che il codice esista e che non sia già stato utilizzato. Se è cosi' procede allinserimento dell'utente.

Banalmente al POST interrogo il database:

var CodicePresente = db.Codici.Where(m => m.Codice == CodiceInserito && m=>!m.Utilizzato).FirstOrDefault();
If(CodicePresente != null)
{
......... // Creo l'utente e procedo all'inserimento
CodicePresente.Utilizzato = true;
db.SaveChange();

}

Il problema è che l'operazione impiega almeno 5 minuti ad eseguire il comando.
Come fare a velocizzare il tutto??
Grazie mille
244 messaggi dal 22 gennaio 2017
Contributi
Potresti inserire un indice su Codice e Utilizzato.
Verifica se l'effettiva lentezza è data dalla mancanza di indici o se il server DB sia seduto a causa del carico di elaborazione del sistema.
Per verificare la mancanza degli indici, dai un occhio alle DM di sql server:
https://blog.sqlauthority.com/2011/01/03/sql-server-2008-missing-index-script-download/
39 messaggi dal 19 settembre 2005
Ciao andrea e grazie.
Ho risolto, alla fine era solo un problema della macchina di sviluppo che era in palla completa. Mi è bastato riavviare e tutto va perfettamente. Comunque userò il consiglio degli indici che non avevo considerato. Grazie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.