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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2016, 14:04   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Alexius Посмотреть сообщение
1. Создаем временную таблицу КодКлиента (группа клиента не нужна), Профиль, СчетГК
...
4. Строим запрос по проводкам с привязкой временной таблицы по INNER JOIN
А заполнять нужно при каждом выполнении запроса?
Или где-то по тригеру? Ведь и клиенты могут меняться, и настройки...

Блин, код жеж нереентерабельный.
Запросы шага 4 нельзя строить пока не будет выполнено построение временной/вспомогательной/зарезолвенной таблицы.

А перестроение придется делать при каждом создании/удалении клиента, плана счетов или настройки.

Тут пора вспомнить акс2012 с ее безумными фин.аналитиками. Там перестроение придется делать для каждой комбинации фин.аналитик (напомню, что в акс2012 в фин.аналитики входит и счет). Да, я говорил вначале про упрощение задачи. Но не такой же ценой. Подход отдельной вспомогательной таблицы по-моему неприменим для акс2012 и выше
))))

Последний раз редактировалось mazzy; 21.04.2016 в 14:09.
Старый 21.04.2016, 14:06   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,914 / 5737 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от mazzy Посмотреть сообщение
А заполнять нужно при каждом выполнении запроса?
Или где-то по тригеру? Ведь и клиенты могут меняться, и настройки...

Блин, код жеж нереентерабельный.
Запросы шага 4 нельзя строить пока не будет выполнено построение временной/вспомогательной/зарезолвенной таблицы.


))))
Ну дык добавь колонку с GUID, и засунь ее во все запросы, обновления и индексы. Или ParmId там, если из аксапты обновлять собираешься.
Ах да - и перестраивать при каждом запросе, разумеется. А чтобы не тормозило - построй по custTrans индекс по custAccount+postingProfile.

Последний раз редактировалось fed; 21.04.2016 в 14:09.
Старый 21.04.2016, 14:22   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fed Посмотреть сообщение
Ну дык добавь колонку с GUID, и засунь ее во все запросы, обновления и индексы.
оО!
ну нахер http://www.youtube.com/watch?v=HcfHBgUTn7I

Последний раз редактировалось mazzy; 21.04.2016 в 14:25.
Старый 21.04.2016, 15:05   #4  
Alexius is offline
Alexius
Участник
Аватар для Alexius
 
461 / 248 (9) ++++++
Регистрация: 13.12.2001
Цитата:
Сообщение от mazzy Посмотреть сообщение
А заполнять нужно при каждом выполнении запроса?
Для начала - да, при каждом выполнении. Философского булыжника нет. Нужно пробовать.
X++:
SELECT DATAAREAID, COUNT(*)
FROM
(
  SELECT DATAAREAID, ACCOUNTNUM, POSTINGPROFILE
  FROM CUSTTRANS
  GROUP BY DATAAREAID, ACCOUNTNUM, POSTINGPROFILE
) T
GROUP BY DATAAREAID
Если результирующие значения не очень страшные, то мне кажется накладные расходы на ее заполнение отобьются на выполнении основного запроса.
Старый 21.04.2016, 16:13   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
--
Цитата:
наивный: 4% по плану запроса, выполнено за 1:17, выбрано 342294 записи
Ну, для отчета (если это отчет) - неплохо, примерно столько же времени потребуется чтобы отчет на ее основе тупо пролистать не читая. Ты хочешь что-то дальше оптимизировать? Зачем? У тебя есть отчеты на 15 миллионов строк ? Ты хочешь чтобы они выполнялись за минуту а не за 20 ? Чего-то ты недоговариваешь
__________________
-ТСЯ или -ТЬСЯ ?
Старый 21.04.2016, 16:23   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Vadik Посмотреть сообщение
--
Ты хочешь что-то дальше оптимизировать? Зачем? У тебя есть отчеты на 15 миллионов строк ? Ты хочешь чтобы они выполнялись за минуту а не за 20 ? Чего-то ты недоговариваешь
Злодей ))) http://coub.com/view/9z36u

я сформулировал свои вопросы в первом сообщении этой темы
Как оптимально написать T-SQL запрос для выборки настройки Table/Group/All (например, счет ГК из профиля разноски)

собственно главный вопрос - Как оптимально написать T-SQL запрос для выборки настройки Table/Group/All (ответ похоже получили. Но так писать не шибко удобно)

побочный квест - как, на ваш взгляд должны быть устроены подобные настроечные таблицы, чтобы и без Аксаптовского кэширования можно было бы удобно работать с такими настроечными таблицами на уровне SQL?
Старый 21.04.2016, 17:10   #7  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от mazzy Посмотреть сообщение
побочный квест - как, на ваш взгляд должны быть устроены подобные настроечные таблицы, чтобы и без Аксаптовского кэширования можно было бы удобно работать с такими настроечными таблицами на уровне SQL?
Удобство - штука относительная. Вот сейчас реализуй то же самое для AX2012, прогони тест со временем выполнения запросов и ты поймешь насколько кучеряво тебе живется на 2009
Цитата:
Злодей
Я знаю
__________________
-ТСЯ или -ТЬСЯ ?

Последний раз редактировалось Vadik; 21.04.2016 в 17:17.
Старый 21.04.2016, 19:05   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Vadik Посмотреть сообщение
Удобство - штука относительная.
http://coub.com/view/2xtx9

Цитата:
Сообщение от Vadik Посмотреть сообщение
Вот сейчас реализуй то же самое для AX2012, прогони тест со временем выполнения запросов и ты поймешь насколько кучеряво тебе живется на 2009
я в курсе. поэтому и ввел дисклаймер сразу ))))

Цитата:
Сообщение от mazzy Посмотреть сообщение
...
И для простоты я предлагаю обсуждать акс2009 и ниже. Поскольку сам принцип выборки данных из настроечных таблиц в акс2012 и выше не изменился. Но общие планы счетов (chart of accounts), безумные финансовые аналитики, включающие счет ГК, только захламят обсуждение, ничего не изменяя в сути вопроса.

===================================
и все таки... может у кого есть что сказать?

Цитата:
Сообщение от mazzy Посмотреть сообщение
как, на ваш взгляд должны быть устроены подобные настроечные таблицы Table/Group/All, чтобы и без Аксаптовского кэширования можно было бы удобно работать с такими настроечными таблицами на уровне SQL, Reporting Service, OLAP и прочих внешних систем?
напомню, что сама идеология подобных таблиц появилась еще в Конкорде и в Навижине. Еще на базах собственного формата с построчным обращением к базе. SQL тогда был в младенчестве.
Старый 22.04.2016, 09:50   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Не надо лохматить профили разноски. Материализуй связь между проводкой по клиенту и клиентскому счету в ГК через поле в CustTrans или таблицу сбоку и заполняй при разноске. И работать будет "удобно", и проблем с выверкой не будет
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: Logger (1).
Старый 22.04.2016, 10:00   #10  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от mazzy Посмотреть сообщение
и все таки... может у кого есть что сказать?
Может быть, стоит пойти с этим вопросом на профильный форум на SQL.RU (хотя там задать его будет посложнее, скорее всего, будут требовать привести скрипты таблиц, статистику, а то и repro, конкретный запрос, и т.д. и т.п.), зато там уж скорее подскажут.

Кроме того, какие-то немного шаманские сравнения получаются.

1. IMHO, стоит включить SET STATISTICS TIME / SET STATISTICS IO (можно в опциях в Management Studio) и хотя бы смотреть, чтобы примерно то же количество чтений были логическими/физическими, и не ждал ли MS SQL во время выполнения кого-то ещё).

2. "То, о чем предупреждал Владимир Максимов" --- посмотреть Estimated number of rows в каждом плане, т.к. если оценки сильно отличаются от реальных, и Вы выберете этот план, то потом можно очень сильно пожалеть... Дело в том, что, выбирая в таких случаях по реальному времени выполнения, Вы просто надеетесь на удачу.

3. Да, а (если не накладывать условий на pSumAccount) сколько занимает такая же выборка из CustTrans? У Вас, похоже, большой её кусок считывается и передаётся на клиента, может всё время вообще на это уходит, откуда нам знать?

4. А какую версию MS SQL Server Вы используете (в разных версиях поведение может кардинально отличаться)?

Последний раз редактировалось Ярослав Щекин; 22.04.2016 в 10:01. Причина: опечатка
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Произвольный SQL-запрос listener DAX: База знаний и проекты 26 26.07.2016 09:31
Пользовательские настройки. Выборки формы r2d2 DAX: Функционал 1 13.11.2014 11:37
Автоматический выбор профиля разноски при создании заказа ada DAX: Функционал 15 30.06.2005 14:46
Настройка профиля разноски модуля Основные средства mnu DAX: Функционал 24 23.06.2004 09:45
Собственный SQL запрос в FormDataSource Alexey DAX: База знаний и проекты 0 20.12.2001 00:35

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

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

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