Перевірка, що індекси атрибутів використовуються в запиті від ArcObjects?


11

У нас є деяке програмне забезпечення як частина більшого проекту, написаного за допомогою ArcObjects через .NET. Це програмне забезпечення мігрує та об'єднує дані з декількох файлових баз даних геоданих в одній схемі в одну файлову базу даних геоданих за аналогічною, але різною схемою. Деякі етапи міграції включають пошук існуючого рядка та оновлення його даними з іншої таблиці. Це може стати дуже повільним, коли база даних геоданих велика, тому я додав декілька індексів атрибутів у декількох полях, щоб покращити ефективність запиту / оновлення.

Чи є спосіб, який я можу підтвердити, що запити використовують нові індекси атрибутів, а можливо, як виконується запит?

Я думаю, що я справді шукаю еквівалент плану запитів - щось подібне до EXPLAIN PLANOracle.

Запити є на базі даних геоданих, використовуючи ArcObjects безпосередньо (відсутність резервного файлу RDBMS або SQL).


Ви приурочували ефективність до і без індексів атрибутів? Я думаю, що це єдиний спосіб дізнатися, що вони мають ефект.
blah238

Зараз я виконую тести ефективності з різними розмірами набору даних. Я спробую опублікувати результати, коли отримаю їх.
Гнат

Я шукав у бібліотеках класів ArcObjects щось подібне до методу Smallworld Magik is_size_fast?, який повертає істину, якщо використовуються індекси, але я не міг побачити еквівалентний виклик ArcObjects.
Гнат

fGDB - це власний формат бази даних ESRI, є API, який дозволить вам отримувати доступ до даних без об’єктів ESRI, але я сумніваюся, що це би пролило багато світла на вашу кількість. Використання індексів автоматично та не може бути виявлено або підтверджено. Я погоджуюся з blah238, це єдиний спосіб сказати напевно. Варіанти "унікальних" та "висхідних" можуть мати велику різницю, але використовуйте ці параметри лише в тому випадку, якщо ви абсолютно впевнені в унікальності та / або підйомі.
Майкл Стимсон

@ blah238 Я думаю, ви могли б перетворити свій коментар у відповідь.
PolyGeo

Відповіді:


1

Файл Geodatabase - це власний формат бази даних Esri, є API, який дозволить вам отримувати доступ до даних без ArcObjects, але я сумніваюся, що це проллє багато світла на ваш склад.

Використання індексів є автоматичним, на рівні бази даних, і його неможливо виявити або підтвердити, за винятком своєчасності функцій, що використовують їх.

Я погоджуюся з blah238, єдиний спосіб точно сказати - це запускатись із побудованими індексами та без них та порівнювати різницю у часі.

Параметри "унікальних" та "висхідних" для побудови індексу можуть мати велику різницю, але використовуйте ці параметри лише в тому випадку, якщо ви абсолютно впевнені в унікальності та / або висхідності, якщо дані не підходять, індекс або не будується, або, якщо це зробить, швидше за все, скоріше негативно вплине на продуктивність, ніж підвищить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.