Condividi tramite


Limitazioni della funzionalità degli indici mancanti

La funzionalità degli indici mancanti presenta le limitazioni seguenti:

  • Non è progettata per ottimizzare una configurazione di indicizzazione.

  • Non consente di raccogliere statistiche per oltre 500 gruppi di indici mancanti.

  • Non specifica un ordine per le colonne da utilizzare in un indice.

  • Nelle query che includono predicati di disuguaglianza, restituisce informazioni sui costi meno accurate.

  • Segnala solo le colonne incluse per alcune query, pertanto le colonne chiave dell'indice devono essere selezionate manualmente.

  • Restituisce solo informazioni non elaborate sulle colonne in cui è possibile che manchino gli indici.

  • Non suggerisce indici filtrati.

  • Può restituire costi diversi per uno stesso gruppo di indici mancanti se è presente più volte negli Showplan XML.

  • Non considera piani di query semplici.

Nelle sezioni seguenti vengono fornite ulteriori informazioni su queste limitazioni.

Ottimizzazione di una configurazione di indicizzazione

La funzionalità degli indici mancanti è uno strumento semplice e rapido per l'individuazione degli indici mancanti che consente di migliorare in modo significativo le prestazioni delle query. Questa funzionalità, tuttavia, non offre informazioni sufficienti per l'ottimizzazione della configurazione di indicizzazione. Per questo scopo è necessario utilizzare Ottimizzazione guidata Motore di database. Per ulteriori informazioni su Ottimizzazione guidata Motore di database, vedere Ottimizzazione della progettazione fisica di database e Funzionalità correlate di ottimizzazione delle query.

Numero massimo di gruppi di indici mancanti

Vengono raccolte statistiche per un numero massimo di 500 gruppi di indici mancanti. Quando questa soglia viene raggiunta, non vengono raccolti altri dati relativi ai gruppi di indici mancanti. Questa soglia non è un parametro ottimizzabile e non può essere modificato.

Ordine delle colonne di indice

La funzionalità degli indici mancanti non considera il tipo di ordinamento ottimale quando suggerisce un indice. Si consideri la query di esempio seguente:

SELECT column_a, column_b
FROM table_1
WHERE column_a < 10000
AND column_b < 10000
ORDER BY column_b, column_a

È possibile che questa funzionalità suggerisca un indice ed elenchi column_a prima di column_b, mentre il tipo di ordinamento più vantaggioso è column_b, column_a, che corrisponde all'ordinamento della query. Durante la creazione di un'istruzione DDL (Data Definition Language) per l'implementazione di un indice mancante, scegliere il tipo di ordinamento ottimale esaminando le singole query del carico di lavoro. Per ulteriori informazioni sull'ordinamento delle colonne nelle istruzioni CREATE INDEX sulla base dell'output ricevuto dalla funzionalità degli indici mancanti, vedere Utilizzo delle informazioni sugli indici mancanti per scrivere istruzioni CREATE INDEX.

Query che includono solo predicati di disuguaglianza

La funzionalità degli indici mancanti utilizza un modello semplicistico per generare le informazioni sui costi relative alle query che includono solo predicati di disuguaglianza. Di conseguenza, le informazioni sui costi ottenute per tali query possono essere meno accurate rispetto alle informazioni ottenute per le query che includono predicati di uguaglianza. Si consideri la query di esempio seguente, che non contiene predicati di uguaglianza:

SELECT *
FROM table_1
WHERE column_a > -1
AND column_b > -1

In questa query è presente solo un predicato di disuguaglianza (WHERE column_a > -1 AND column_b > -1). Si supponga che tutte le righe in table_1 soddisfino le condizioni per i predicati column_a > -1 e column_b > -1. In tal caso la funzionalità degli indici mancanti può suggerire erroneamente un indice sia in column_a che in column_b. Di conseguenza, anche i valori di impatto segnalati dalla vista a gestione dinamica sys.dm_db_missing_indexes_group_stats possono risultare errati.

Restituzione solo delle colonne incluse per alcune query

In alcuni casi la funzionalità registra le informazioni di utilizzo delle colonne solo per le colonne incluse. Ad esempio, è possibile che la funzionalità registri le colonne di uguaglianza = { }, le colonne di disuguaglianza = { } e le colonne incluse = {b, c, …}. In questo caso una delle colonne incluse deve essere selezionata per la colonna chiave dell'indice. Per determinare quale delle colonne incluse selezionare per la chiave dell'indice, utilizzare le informazioni relative all'indice mancante per altre query che si avvalgono delle stesse colonne.

Restituzione solo delle informazioni non elaborate

La funzionalità degli indici mancanti restituisce informazioni non elaborate in relazione alle colonne in cui è possibile che manchino gli indici. Di conseguenza, per poter utilizzare le informazioni restituite per creare un indice, è possibile che sia necessaria un'elaborazione ulteriore.

Ad esempio, se la colonna coinvolta è una colonna calcolata e il calcolo è di tipo non deterministico o impreciso, l'istruzione CREATE INDEX in tale colonna avrà esito negativo. Nel caso di un calcolo impreciso, prima di creare l'indice è necessario rendere persistente la colonna.

Restituzione di costi diversi per uno stesso gruppo di indici mancanti negli Showplan XML

È possibile che alcuni gruppi di indici mancanti siano presenti più volte negli Showplan XML con costi diversi per ogni singola occorrenza. Questo problema può verificarsi quando parti diverse di un'unica query utilizzano lo stesso gruppo di indici mancanti in modo differente.

Si consideri la query di esempio seguente:

SELECT i.CustomerID, c.ModifiedDate, City
FROM NewIndividual i JOIN NewCustomer c ON i.CustomerID = c.CustomerID
                    AND c.CustomerType = 'I'
          JOIN NewCustomerAddress ca ON ca.CustomerID = c.CustomerID
          JOIN NewAddress a ON a.AddressID = ca.AddressID
WHERE i.CustomerID = 16701

In questa query le due diverse condizioni di join nella colonna CustomerID generano due gruppi di indici mancanti identici che contengono lo stesso indice nella colonna NewIndividual.CustomerID. In questo caso, nella vista a gestione dinamica sys.dm_db_missing_index_groups sarà presente una sola riga per il gruppo di indici mancanti. Tale gruppo, tuttavia, verrà riportato più volte nell'output dello Showplan XML con costi diversi per le singole condizioni di join.