Domanda

Qualcuno sa a cosa servono gli indici ipotetici in SQL Server 2000? Ho una tabella con oltre 15 di tali indici, ma non ho idea di cosa siano stati creati. Possono rallentare le eliminazioni / inserimenti?

È stato utile?

Soluzione

gli indici ipotetici vengono in genere creati quando si esegue la procedura guidata di ottimizzazione dell'indice e sono suggerimenti, in circostanze normali verranno rimossi se la procedura guidata funziona correttamente.

Se alcuni vengono lasciati in giro possono causare alcuni problemi, vedere questo link per modi per rimuoverli .

Altri suggerimenti

Non sono sicuro del 2000, ma nel 2005 gli indici ipotetici e gli oggetti di database in generale sono oggetti creati da DTA (Database Tuning Advisor)

Puoi verificare se un indice è ipotetico eseguendo questa query:

SELECT  *
FROM    sys.indexes
WHERE   is_hypothetical = 1

Se hai fornito al consulente di tuning buone informazioni su cui basare la sua strategia di indicizzazione, direi di fidarti generalmente dei suoi risultati, ma se dovessi ovviamente esaminare come li ha allocati prima di fidarti ciecamente. Ogni situazione sarà diversa.

Una ricerca su Google per " indici sql server " ha restituito seguente articolo come primo risultato. Citazione:

  

Gli indici ipotetici e gli oggetti del database in generale sono semplicemente oggetti creati da DTA (Database Tuning Advisor)

Gli indici ipotetici sono quelli generati da Database Tuning Advisor. In generale, avere troppi indici non è una grande idea e dovresti esaminare i tuoi piani di query per potare quelli che non vengono utilizzati.

Da sys.indexes :

is_hypothetical     bit     

1 = Index is hypothetical and cannot be used directly as a data access path. 
    Hypothetical indexes hold column-level statistics.

0 = Index is not hypothetical.

Potrebbero anche essere creati manualmente con WITH STATISTICS_ONLY:

non documentato
CREATE TABLE tab(id INT PRIMARY KEY, i INT);

CREATE INDEX MyHypIndex ON tab(i) WITH STATISTICS_ONLY = 0;
/* 0 - withoud statistics -1 - generate statistics */

SELECT name, is_hypothetical
FROM sys.indexes
WHERE object_id = OBJECT_ID('tab');

db < > fiddle

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top