Не умею расставлять индексы для связанных таблиц

0 голосов
спросил 12 Янв, 11 от sergiy (4,180 баллов) в категории Программные продукты Esri
Здравствуйте!

Все данные храняться в БД SQL server.

Есть 1 слой и 1 таблица в базе, которые я связал в mxd - проекте джоином. Начинаю поиск по всем слоям и всем таблицам проекта и тут начинаются у меня страшные тормоза. То, что ищется без связи 6 секунд, начинает искаться больше 2 минут, после джоина таблиц, при этом подвисая как мертвое.

Почитал вроде как рекомендуют построить доп индексы в базе. Ну я и поставил индексы на поля, по которым связывал таблицы - эффекта ноль. Наверно я не там индексы ставил??

12 Ответы

0 голосов
ответил 12 Янв, 11 от TDenis (42,620 баллов)
Когда делаете Join, ArcMap не предлагает индекс создать?

Не пробовали инструментом "Добавить атрибутивный индекс" из тулбокса?
0 голосов
ответил 12 Янв, 11 от sergiy (4,180 баллов)
Когда делаете Join, ArcMap не предлагает индекс создать?

Не пробовали инструментом "Добавить атрибутивный индекс" из тулбокса?


Когда делаю джоин как раз мне и пишет что связь создается без индекса, не предлагая построить его.

пробовал через тулбокс добавить атрибутивный индекс, собственно это тоже самое когда я напрямую в квери аналайзере его создаю. Эффекта никакого не добился
0 голосов
ответил 12 Янв, 11 от TDenis (42,620 баллов)
Не смотрели в профилировщике, что там за запросы к БД идут?
0 голосов
ответил 12 Янв, 11 от sergiy (4,180 баллов)
Не смотрели в профилировщике, что там за запросы к БД идут?

а какие события надо отлавливать?
0 голосов
ответил 12 Янв, 11 от TDenis (42,620 баллов)
Посмотреть как выглядит этот Select, который тормозит.

Посмотреть, используются ли вообще индексы при соединении.
Может быть сделать трейс, подсунуть его помощнику по настройке ядра - вдруг подскажет чего.

И если что - я понятия не имею, что там за запрос формируется. Надо изучать.
0 голосов
ответил 13 Янв, 11 от sergiy (4,180 баллов)
Эх, приятно что Вы пытаетесь мне помочь, но, к сожалению, я плавая с профилировщиком.

Собственно открыл его, для трассировки выбрал вариант отслеживания TSQL и хранимые процедуры. Поработал он минут этак 5-7, открываю его а там 64000 строчек, ну я и обалдел, как бы надо усекать все это дело ато в таком колличестве строчек не долго и потеряться . А построить все индексы, что предлагает визард как то не рискнул, он мне предложил что то около 100 с чем то индексов построить, смотрю предлагает и на поле OBJECTID строить, то я побоялся это делать, база то боевая рабочая, как бы все не розвалить
0 голосов
ответил 13 Янв, 11 от TDenis (42,620 баллов)
Компрессия не помогает, анализ класса/таблицы?

А зачем 5-7 минут?
Запустили профилировщик, запустили ArcMap, ткнули идентификацией по слою с join-ом или открыли таблицу атрибутов, отключили профилировщик.
Смотреть можно только RPC Completed.
Потом по запросу можно глянуть План выполнения. Сравнить его с планом, который без индекса.
Если версионность включена, запрос там, похоже, будет неслабый.

Можно попробовать прогнать помощник только по этому запросу.
    
0 голосов
ответил 18 Янв, 11 от TDenis (42,620 баллов)
Получилось чего-нибудь?
Мне тоже интересно, я тоже часто использую Join.
0 голосов
ответил 25 Янв, 11 от Grigoriy (127,020 баллов)
"Начинаю поиск по всем слоям и всем таблицам проекта" - это зря image.
Поиск просто строки по таблице с джойном происходит очень долго. И от этого вряд-ли удастся избавиться. Можете попробовать создать джойн средствами SQL-сервера - "пространственную вьюшку" - см команду sdetable -o create_view.
И вот эту вьшку можно добавлять слоем в ArcGIS. Должно работать быстрее.
А индексы нужно строить по полям, по которым джойнитесь, и по тем полям, по которым ищете.
Но всё равно поиск всего сразу будет занимать время :).
0 голосов
ответил 25 Янв, 11 от TDenis (42,620 баллов)
Поиск просто строки по таблице с джойном происходит очень долго. И от этого вряд-ли удастся избавиться.

Григорий, подскажите, а почему так?
В чём будет отличие от вьюшки?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...