Ricerca avanzata Procedura memorizzata

0

Quindi sto lavorando su un'applicazione web MVC ASP.NET che si concentra su molti dati e sulla manipolazione dei dati.

PANORAMICA DEL PROBLEMA: Abbiamo una ricerca avanzata con 25 diversi criteri di filtro. Sto usando una stored procedure per questa ricerca. La stored procedure accetta parametri, filtra per oggetti specifici e calcola i dati di ritorno da tali oggetti. Si interroga su tabelle di grandi dimensioni 14 milioni di record su alcune tabelle, filtri e tabelle temporanee hanno contribuito ad alleviare alcuni dei colli di bottiglia per tali query.

NUMERO: La procedura memorizzata utilizzata per eseguire 1 minuto per l'esecuzione, che crea un timeout restituendo 0 risultati al browser. Ho riscritto la procedura e l'ho ridotta a 21 secondi, quindi il timeout non si verifica. Questo si verifica SOLO questo in quanto rallenta la PRIMA volta che viene eseguita la ricerca, dopodiché richiede 5 secondi.

Mi chiedo se dovrei adottare un approccio diverso a questo problema, dovrei preoccuparmi di questo tipo di problema di prestazioni se non si verifica un timeout?

    
posta Rayshawn 02.07.2013 - 16:50
fonte

1 risposta

2

No, non è necessario preoccuparsi di un problema che non si verifica. Se la tua query non sta scadendo o è in esecuzione in modo inaccettabilmente lento, puoi allocare il tuo tempo altrove.

Se si stanno consentendo query molto complesse, si pone la domanda sul perché non si stia permettendo un SQL leggermente igienizzato. E se permetti affermazioni arbitrarie di selezione, allora il modo in cui gestisci i timeout e gli errori e le cancellazioni diventano più importanti delle prestazioni del tuo sql gui-sourced.

Ho visto e lavorato con le app Web che non consentono la gestione diretta di sql anche per utenti competenti e i risultati sono sempre stati deludenti. Empowerment ti consente di gestire i casi limite da una prospettiva di progettazione e focalizzare la tua attenzione su dove può ottenere il massimo beneficio invece di svolgere il lavoro di un utente per loro tutto il tempo.

    
risposta data 02.07.2013 - 18:42
fonte

Leggi altre domande sui tag