2010-08-16 17 views
5

ciao ho provato una query di selezione che contiene un join esterno sinistro su SQL Server CE e la sua esecuzione come 30 secondi per l'esecuzione.
e quindi ho cambiato la stessa query per essere un inner join e il suo prendere meno di 1 secondo.
la stessa query esterna è molto veloce su SQL Server 2008.
qualcuno sa perché?
anche qual è la soluzione per questo problema di prestazioni?
sto pensando a 2 query che ho unione ma non mi piace questa soluzione veramente causa della ripetizione del codice.
graziePerché la performance di LEFT OUTER JOIN non è corretta su SQL Server CE 3.5?

Edit:
un'altra query che hanno cattive prestazioni è select * from table where item not in (select item from table2)
molto strano davvero, ma ha bisogno di essere cambiato in esterno sinistro questa query uniscono quindi le prestazioni è fisso

+0

Quante righe ci sono nella tabella a sinistra sul lato della vostra SINISTRA ADERIRE? –

+0

Qual è la query, lo schema ecc. Per favore? – gbn

+0

ci sono 3600 righe in 1 tabella e 6400 nell'altro – Karim

risposta

4

ho trovato il problema
Appare che il server SQL CE ha problemi con l'ottimizzazione dei join esterni.
Quindi il problema si verifica dove c'è un indice in una tabella e nessun indice nell'altro.
Vedere http://msdn.microsoft.com/en-us/library/ms172984(SQL.100).aspx il "Limite Utilizzando outer join" parte
La correzione è stato quello di aggiungere un indice sulla chiave esterna e la performance è stata fissata

+0

Approva subito la tua risposta come corretta – abatishchev

+0

non posso approvare la mia risposta fino a 2 giorni trascorsi :("Puoi accettare la tua risposta in 2 giorni (clicca su questa casella per chiudere) " – Karim

Problemi correlati