Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Sintomi

Considerare lo scenario descritto di seguito:

  • Si usa Microsoft SQL Server 2014 o una versione successiva.

  • Si esegue una query che contiene i predicati per i filtri join e non join.

  • La query viene compilata usando il nuovo estimatore della cardinalità (nuovo CE).

In questo scenario si verifica un peggioramento delle prestazioni delle query. Questo problema non si verifica se la query viene compilata con l'eredità CE.

Risoluzione

In SQL Server 2014 e versioni successive è possibile usare il contrassegno di traccia 9476 per forzare la nuova versione CE a usare il presupposto di contenimento semplice anziché il presupposto di contenimento di base predefinito. Vedere la sezione "altre informazioni". L'attivazione di questo flag di traccia può migliorare la scelta del piano di query senza dover ripristinare completamente il modello CE legacy se le condizioni seguenti sono vere:

  • Si verifica una scelta del piano di query non ottimale che causa una prestazione complessiva degradata per le query che contengono predicati per i filtri join e non join.

  • È possibile verificare un'imprecisione significativa in una stima di "cardinalità di join" (ovvero il numero effettivo e stimato di righe che differiscono in modo significativo).

  • Questa imprecisione non esiste quando si compilano query utilizzando l'eredità CE.

Puoi abilitare questo flag di traccia globalmente, a livello di sessione o a livello di query. Nota L'uso errato dei contrassegni di traccia può degradare le prestazioni del carico di lavoro. Per altre informazioni, vedere la sezione "Introduzione" dell'articolo della Microsoft Knowledge Base seguente:

2801413 Abilitare il comportamento del piano query optimizer di SQL Server che può essere controllato da diversi flag di traccia su un livello di query specifico

Ulteriori informazioni

Da SQL Server 2014 è stato introdotto il nuovo estimatore della cardinalità per il livello di compatibilità dei database 120 e versioni successive. Il nuovo modello di CE modifica diverse ipotesi dall'eredità di tipo CE nell'esempio usato da Query Optimizer quando stima la cardinalità per diversi operatori e predicati. Una di queste modifiche è correlata al presupposto per il contenimento del join. Il modello CE legacy presuppone che gli utenti vengano sempre interrogati per i dati esistenti. Questo significa che, per un predicato di join che include un'operazione equijoin per due tabelle, le colonne unite si trovano su entrambi i lati del join. In presenza di predicati di filtro non di join aggiuntivi rispetto alla tabella join, l'legacy CE presuppone un certo livello di correlazione per i predicati per i predicati e non per i filtri di join. Questa correlazione implicita si chiama contenimento semplice. In alternativa, la nuova CE USA il contenimento base come correlazione. Il nuovo modello CE presuppone che gli utenti possano eseguire query per i dati che non esistono. Ciò significa che i predicati di filtro su tabelle separate potrebbero non essere correlati tra loro. Usiamo quindi un approccio probabilistico. Per molti scenari pratici, l'uso del presupposto di contenimento base consente di creare stime migliori. Questo, a sua volta, crea scelte di piano di query più efficienti. Tuttavia, in alcune situazioni, l'uso del presupposto di contenimento semplice può offrire risultati migliori. In questo caso, è possibile che si verifichi una scelta di piano di query meno efficiente quando si usa la nuova interfaccia CE invece dell'eredità. 

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×