none
Where In in SQL 2008 r2 RRS feed

  • Discussione generale

  • Presso un'azienda dove sono consulente mi sono trovato una query dove vi sono 3 clausole "where in" con anche 150 id nella condizione, premettendo che il cliente non vuole spenderci il tempo tale per rivedere tutta quella parte dove vengono composte le query in VB6, quindi sono costretto a ottimizzare quello che hanno senza mettere mano al codice.

    Consideriamo che poi lo facevano a cascata su 4 vite... ma ora ho pulito quella situazione.. 

    Comunque lamentano un crollo delle prestazioni di queste query statistiche dopo il passaggio a 2008 r2 ...

    Avete suggerimenti per ottimizzare quest'ultime? 


    DesartStudio

    giovedì 17 gennaio 2013 10:55

Tutte le risposte

  • Se postassi un execution plan della query potresti aiutarci a vedere dov'è il tuo problema, in ogni caso visto che parli di "IN", io ti consiglio di sostituirlo con "EXISTS" dove possibile.

    Il crollo delle prestazioni delle query credo sia dato dal fatto che SQL Server usa in automatico il query optimizer per ottenere un piano di query ottimizzato ed aumentare quindi le prestazioni.

    Nella vostra applicazione magari sono scritte male (e da qui il crollo di prestazioni perché il nuovo server non ha ancora elaborato le statistiche di esecuzione), dovete dare il tempo a SQL Server di costruirsi il piano di esecuzione migliore. 

    giovedì 17 gennaio 2013 11:13
  • Prima di applicare ogni cambiamento sintattico, hai fatto una bella rebuild degli indici e magari anche un aggiornamento statistiche?

    Alessandro Alpi SQL Server MVP

    venerdì 18 gennaio 2013 13:12
    Moderatore