Verifica che gli indici degli attributi vengano utilizzati nelle query da ArcObjects?


11

Abbiamo alcuni software come parte di un progetto più ampio scritto usando ArcObjects via .NET. Questo software migra e unisce i dati da più file geodatabase in uno schema in un singolo file geodatabase in uno schema simile ma diverso. Alcuni passaggi della migrazione prevedono la ricerca di una riga esistente e l'aggiornamento con i dati di una tabella diversa. Questo può diventare molto lento quando il geodatabase di destinazione è grande, quindi ho aggiunto alcuni indici di attributo multi-campo per migliorare le prestazioni di query / aggiornamento.

Esiste un modo per confermare che le query utilizzano i nuovi indici di attributo e forse come viene eseguita la query?

Immagino che sto davvero cercando l'equivalente di un piano di query - qualcosa di simile a EXPLAIN PLANOracle.

Le query sono su un geodatabase di file che utilizza direttamente ArcObjects (nessun backend RDBMS o SQL).


Hai cronometrato le prestazioni con e senza indici di attributo? Penso che sia l'unico modo per sapere che stanno avendo un effetto.
blah238,

Sto eseguendo test delle prestazioni ora con set di dati di varie dimensioni. Proverò a pubblicare i risultati quando li avrò.
Gnat,

Ho cercato nelle librerie di classi ArcObjects qualcosa di simile al is_size_fast?metodo di Smallworld Magik , che restituisce true se vengono utilizzati gli indici, ma non riesco a vedere una chiamata ArcObjects equivalente.
Gnat,

fGDB è il formato del database di ESRI, esiste un'API che ti consentirà di accedere ai dati senza oggetti ESRI, ma dubito che farebbe molta luce sul tuo dilemma. L'uso delle indicazioni è automatico e non può essere rilevato o affermato. Sono d'accordo con blah238 che è l'unico modo per dirlo con certezza. Le opzioni "uniche" e "ascendenti" possono avere una grande differenza, ma utilizzare queste opzioni solo se si è assolutamente certi dell'unicità e / o dell'ascensione.
Michael Stimson,

@ blah238 Penso che potresti trasformare il tuo commento in una risposta.
PolyGeo

Risposte:


1

File Geodatabase è il formato del database di Esri, esiste un'API che ti permetterà di accedere ai dati senza ArcObjects ma dubito che farebbe molta luce sul tuo dilemma.

L'uso degli indici è automatico, a livello di database, e non può essere rilevato o affermato se non per la tempestività delle funzioni che li utilizzano.

Sono d'accordo con blah238, l'unico modo per dirlo con certezza è correre con e senza indici costruiti e confrontare la differenza nel tempo.

Le opzioni "uniche" e "ascendenti" per la costruzione di un indice possono avere una grande differenza, ma utilizzano queste opzioni solo se si è assolutamente certi dell'unicità e / o dell'ascensione, se i dati non fossero idonei l'indice non costruirà o, se costruisce, probabilmente influenzerà negativamente le prestazioni piuttosto che migliorarle.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.