AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.05.2008, 14:28   #1  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
1. Включена ли на таблице "SaveDataPerCompany" ?
2. Есть ли кластерный индекс ?
Старый 12.05.2008, 14:44   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Alexius Посмотреть сообщение
1. Включена ли на таблице "SaveDataPerCompany" ?
Да, включена. Поле DataAreaId присутствует в индексе и в запросе. В примере условие по DataAreaId опущено для наглядности
Цитата:
Сообщение от Alexius Посмотреть сообщение
2. Есть ли кластерный индекс ?
Нет, на таблице нет кластерных индексов
Старый 12.05.2008, 15:43   #3  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Варианты решения:
1. Создайте кластерный индекс по RecId
2. Добавьте в имеющейся индекс (DataAreaId, SalesDate, SalesTime) поле RecId и сделайте его кластерным
3. Попробуйте ограничить число полей в выборке и создайте покрывающий индекс
4. Создайте индекс напрямую на SQL (SalesDate, SalesTime, DataAreaId), если поможет, то можете в Аксапте встроить его проверку/создание в Classes / Application / dbSynchronize

Варианты 2,3 помогут с очень высокой вероятностью, 1,4 - надо экспериментировать
Старый 12.05.2008, 16:29   #4  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,966 / 3251 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Alexius Посмотреть сообщение
Варианты решения:
1. Создайте кластерный индекс по RecId
2. Добавьте в имеющейся индекс (DataAreaId, SalesDate, SalesTime) поле RecId и сделайте его кластерным
3. Попробуйте ограничить число полей в выборке и создайте покрывающий индекс
4. Создайте индекс напрямую на SQL (SalesDate, SalesTime, DataAreaId), если поможет, то можете в Аксапте встроить его проверку/создание в Classes / Application / dbSynchronize

Варианты 2,3 помогут с очень высокой вероятностью, 1,4 - надо экспериментировать
Судя по всему у автора проблемы либо с оптимизатором либо со статистикой.
Сомнительно что кластерный индекс спасет. Если оптимизер решит сканировать таблицу, то помочь может вариант 2, но будет пиррова победа. Большое число полей в кластерном индексе плохо сказывается на производителности, плюс при таком условии ключ индекса не возрастает монотонно, что тоже плохо.

По п.4 - можно и в Аксапте решить - был такой ключ командной строки CROSSCOMPANY - позволял ставить dataareaId не в начало индекса.
Старый 12.05.2008, 18:54   #5  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от Logger Посмотреть сообщение
По п.4 - можно и в Аксапте решить - был такой ключ командной строки CROSSCOMPANY - позволял ставить dataareaId не в начало индекса.
Далеко не всегда перемещение поля DataAreaId в конец индекса оптимально для производительности. В АХ 4.0 это поле по умолчанию в начале, но можно перетащить куда угодно.
Старый 12.05.2008, 19:23   #6  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,966 / 3251 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Alexius Посмотреть сообщение
Далеко не всегда перемещение поля DataAreaId в конец индекса оптимально для производительности.
Я этого и не имел в виду.
Просто упомянул про удобный ключ.

Последний раз редактировалось Logger; 12.05.2008 в 19:29.
Теги
план запроса, производительность, статистика, запрос (query), индекс

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Подготовка запроса(ламерские вопросы продолжаются) HorrR DAX: Программирование 4 08.07.2008 13:23
Изменить план выполнения запроса Sequel DAX: Администрирование 2 29.05.2008 15:46
Изменение query запроса в локальных настройках пользователя? 3oppo DAX: Программирование 16 09.04.2008 11:15
Оптимизация запроса oleg_e DAX: Программирование 16 11.01.2008 10:22
Ускорение выполнения запроса Oracle + MS Axapta Горбунов Дмитрий DAX: Программирование 17 15.11.2005 18:13
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:01.