Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Quando il query optimizer non fa il suo lavoro (sql server 2005)

Ho un database in sql server 2005 con tabelle molto grandi, una dell'ordine di milioni di righe. Ieri per la quarta o quinta volta una query che prima girava in tempi brevi ha iniziato a richiedere 2 minuti e mezzo per l'esecuzione.

LA query in questione ha una join tra una tabella con 100 righe ed una con 200.000 righe, fa una join su due campi e naturalmente ho creato un indice per evitare un table scan. Guardando il piano di esecuzione noto che la join viene fatta con il loop. Normalmente il loop va bene per tabelle piccole ma per tabelle con molte righe purtropo è lento. Ho controllato le statistiche, ma nulla. Il risultato è che come in altri casi ho dovuto forzare l'algoritmo di join con un

OPTION (HASH JOIN)

In questo modo forzo una join con un hashtable, appena fatta questa modifica il tempo di esecuzione torna ad essere di 4 secondi. Questa stessa cosa mi capita con altre tabelle e sempre quando ho join tra una tabella molto grande ed una con molte meno righe, non capisco proprio cosa lo spinga a scegliere un piano di esecuzione molto meno efficente.

Gian Maria.

powered by IMHO 1.3

Print | posted on giovedì 23 novembre 2006 09:36 |

Feedback

Gravatar

# re: Quando il query optimizer non fa il suo lavoro (sql server 2005)

Attualmente è un SqlServer SP1 con nessun hotfix.
Microsoft SQL Server Developer Edition (9.00.2047.00)
Se vuoi mandami pure una mail a

alkampfer (at) nablasoft.com

Grazie in anticipo per l'interessamento.

Gian Maria.
23/11/2006 12:50 | Gian Maria
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET