|
![]() |
#1 |
Участник
|
Цитата:
index просто отсортирует выборку в соответствии с полями, указанными в индексе index hint порекомендует оптимизатору использовать именно указанный индекс |
|
![]() |
#2 |
Участник
|
...во как... не знал.
Спасибо за интересную информацию, только непонятно почему сортировка будет выполнена по индексу и при этом сам индекс возможно не будет использован... странно... кроме того при использовании директивы index аксапта ругается (exception) если такого индекса нет... |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от ansoft
![]() ...во как... не знал.
Спасибо за интересную информацию, только непонятно почему сортировка будет выполнена по индексу и при этом сам индекс возможно не будет использован... странно... кроме того при использовании директивы index аксапта ругается (exception) если такого индекса нет... К оптимизации запроса это не имеет никакого отношения. Это просто способ сокращенного написания ORDER BY. Соответственно, будет ругань, если такого индекса нет. Написали ключевое слово ORDER BY, а списка полей - нет. А вот "index hint" - это как раз оптимизация. Точнее, рекомендация серверу по принципу "не будет ли любезен, многоуважаемый джин..." ![]() Впрочему, "ручной тюнинг" (оптимизация) запросов при помощи хинтов, как правило, выходит "себе дороже". Лучше не использовать. |
|
![]() |
#4 |
Участник
|
А как лучше поступить в следующей ситуации...
Есть таблица, в таблице куча полей, но 99% запросов фильтруют данные по двум полям. При этом 33% запросов фильтруют данные по одному полю, 33% запросов фильтруют данные по другому полю, а оставшиеся 33% запросов фильтруют данные по двум полям одновременно. В такой ситуации лучше построить два отдельных индекса по каждому полю, или один индекс по двум полям? ![]() Последний раз редактировалось Skvorcal; 31.08.2010 в 11:41. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от Skvorcal
![]() А как лучше поступить в следующей ситуации...
Есть таблица, в таблице куча полей, но 99% запросов фильтруют данные по двум полям. При этом 33% запросов фильтруют данные по одному полю, 33% запросов фильтруют данные по другому полю, а оставшиеся 33% запросов фильтруют данные по двум полям одновременно. В такой ситуации лучше построить два отдельных индекса по каждому полю, или один индекс по двум полям? ![]() Индекс1 Поле1 Поле2 Индекс2 Поле2 Поле1 |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от Skvorcal
![]() А как лучше поступить в следующей ситуации...
Есть таблица, в таблице куча полей, но 99% запросов фильтруют данные по двум полям. При этом 33% запросов фильтруют данные по одному полю, 33% запросов фильтруют данные по другому полю, а оставшиеся 33% запросов фильтруют данные по двум полям одновременно. В такой ситуации лучше построить два отдельных индекса по каждому полю, или один индекс по двум полям? ![]() и если в нем включено автосоздание индексов... то ничего не делайте. подождите немножко, а потом посмотрите что MS SQL насоздавал. потом примете решение. |
|
![]() |
#7 |
Участник
|
Цитата:
![]() Цитата:
1. Слишком дорого и муторно разворачивать OLAP ради одного-двух отчетов. 2. Отчет является оперативным. Его формируют по нескольку раз в день и отслеживают тем самым исполнение операций. Плюс некоторое планирование... Отчеты лучше строить по тем таблицам, в которых содержиться максимум требуемой информации и обеспечивается максимальная скорость построения и достоверность данных. А проводки с трехэтажными джоинами или хитрыми комбинациями аналитик - это имхо на любителя... А разве при очередном обновлении приложения (обновляем слоем, а не проектами) и последующей синхронизации словаря Аксапта не удалит все неаксаптовые индексы? |
|
![]() |
#8 |
Участник
|
Цитата:
http://msmvps.com/blogs/gladchenko/a...3/1311293.aspx тогда можно на основе рекомендаций сделать индексы в АОТе. Или есть еще какой-нибудь другой механизм? |
|
![]() |
#9 |
Участник
|
Цитата:
![]() Цитата:
Цитата:
Я думаю, что Сергей имел ввиду стандартный инструмент SQL Server Database Engine Tuning Adviser. Нужно сначала с помощью SQL Server Profiler собрать рабочую нагрузку для базы в файл или в таблицу. При этом работа рабочей базы замедлится, т.к. можно сказать что все запросы (ну или те которые вы выберете для сбора) будут логироваться. Потом на тестовой базе данных, идентичной рабочей, нужно запустить Tuning Adviser, указав в качестве нагрузки собранный лог. Какое-то время он будет "колбаситься", а потом выдаст свои советы по модификации статистик и индексов на таблицах. Его советы нужно хорошо взвешивать, т.к. если насоздавать все индексы которые он предлагает создать, например, на InventTrans, то как бы от его советов не стало худо. Если же вы согласны с его советом, то индекс нужно вручную создавать средствами AX. |
|
Теги |
индекс, как правильно |
|
![]() |
||||
Тема | Ответов | |||
Вопрос по резервированию | 9 | |||
Поле mandatory, а 0 вставить нужно | 5 | |||
вычисляемое поле | 8 | |||
Где взять материалы и еще один конкретный вопрос | 6 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|