Mamy oprogramowanie w ramach większego projektu napisanego przy użyciu ArcObjects przez .NET. To oprogramowanie migruje i scala dane z wielu geobaz danych pliku w jednym schemacie do geobazy danych z jednym plikiem w podobnym, ale innym schemacie. Niektóre etapy migracji obejmują wyszukiwanie istniejącego wiersza i aktualizowanie go danymi z innej tabeli. Może to być bardzo powolne, gdy docelowa geobaza jest duża, dlatego dodałem kilka indeksów atrybutów z wieloma polami, aby poprawić wydajność zapytań / aktualizacji.
Czy istnieje sposób, w jaki mogę potwierdzić, że zapytania korzystają z nowych indeksów atrybutów i być może w jaki sposób zapytanie jest wykonywane?
Chyba naprawdę szukam odpowiednika planu zapytań - czegoś podobnego do EXPLAIN PLAN
Oracle.
Zapytania są na geobazie pliku przy użyciu ArcObjects bezpośrednio (bez zaplecza RDBMS lub SQL).
is_size_fast?
metody Smallworld Magik , która zwraca wartość true, jeśli używane są indeksy, ale nie widziałem równoważnego wywołania ArcObjects.Odpowiedzi:
Plik Geodatabase jest własnym formatem bazy danych Esri, istnieje interfejs API , który pozwoli ci na dostęp do danych bez ArcObjects, ale wątpię, czy rzuciłoby to dużo światła na twoje rozbieżności.
Korzystanie z indeksów jest automatyczne na poziomie bazy danych i nie może być wykryte ani potwierdzone, z wyjątkiem terminowości funkcji, które ich używają.
Zgadzam się z blah238, jedynym sposobem, aby na pewno powiedzieć, jest bieganie z wbudowanymi indeksami i bez nich oraz porównywanie różnicy w czasie.
„Unikalne” i „rosnąco” opcje budowania indeksu mogą mieć dużą różnicę, ale używaj tych opcji tylko wtedy, gdy jesteś absolutnie pewien wyjątkowości i / lub wniebowstąpienia, jeśli dane nie będą odpowiednie, indeks albo nie zbuduje, albo, jeśli to się buduje, raczej raczej negatywnie wpłynie na wydajność niż poprawi.
źródło