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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.04.2016, 16:23   #1  
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   #2  
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   #3  
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   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1853 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Не надо лохматить профили разноски. Материализуй связь между проводкой по клиенту и клиентскому счету в ГК через поле в CustTrans или таблицу сбоку и заполняй при разноске. И работать будет "удобно", и проблем с выверкой не будет
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: Logger (1).
Старый 22.04.2016, 10:00   #5  
Ярослав Щекин 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. Причина: опечатка
Старый 22.04.2016, 11:40   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Vadik Посмотреть сообщение
Материализуй связь между проводкой по клиенту и клиентскому счету в ГК через поле в CustTrans или таблицу сбоку и заполняй при разноске. И работать будет "удобно", и проблем с выверкой не будет
во-первых, я уже отвечал на этот вопрос выше - уже материализовали. ничего хорошего у товарищей не получилось - пользователи то проверяют по стандартному функционалу ))))

во-вторых, сделал список объектов в Аксапте, который использует перечисление TableGroupAll

там 143 объекта (и это я еще кастомно-проектные убрал).
среди них:
  • Asset и ОС
  • comission - расчет комиссионных и агентских
  • CustPaym, VendPaym - управление платежами
  • разноски по клиентам, поставщикам, подотченикам, номенклатуре
  • прайс-лист и цены !!!!
  • управление качеством
  • упаковка
  • накладные расходы
  • PBA - бывший конфигуратор продукции
  • Proj - проекты (дофига!)
  • Purch, Sales - закупки и заказы на продажу
  • Route - маршруты
  • RPay - расчет зарплаты (дофига!)
  • RTax - налоговый учет (дофига!)
  • smm
  • supp

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

свою то проблему я давно решил. причем как это ни странно, наивным способом. А он оказался еще и самым быстрым.

Цитата:
Сообщение от Ярослав Щекин Посмотреть сообщение
Может быть, стоит пойти с этим вопросом на профильный форум на SQL.RU
ну, можно и так....
Вложения
Тип файла: txt objects.txt (2.9 Кб, 276 просмотров)

Последний раз редактировалось mazzy; 22.04.2016 в 12:01.
Старый 22.04.2016, 14:23   #7  
Ярослав Щекин is offline
Ярослав Щекин
Участник
 
78 / 174 (6) ++++++
Регистрация: 16.03.2009
Цитата:
Сообщение от mazzy Посмотреть сообщение
я подумал, что этого достаточно, чтобы поговорить о принципе в целом
тема ветки: Как оптимально написать T-SQL запрос для выборки настройки Table/Group/All (например, счет ГК из профиля разноски)
И всё же, какая производительность у "простой" выборки (без PSumAccount) с теми же условиями?

Цитата:
Сообщение от mazzy Посмотреть сообщение
свою то проблему я давно решил. причем как это ни странно, наивным способом. А он оказался еще и самым быстрым.
А вот у меня способ с подзапросами (только чуть подправленный) работает не хуже на MS SQL 2014, и что (оттого что план у него похож на тот, что Вы приводили для "наивного") ?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Произвольный 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, время: 04:20.