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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2004, 16:16   #1  
Ю-ю is offline
Ю-ю
Участник
 
23 / 10 (1) +
Регистрация: 23.04.2004
Адрес: Москва
? Управление опциями SQL запроса
При трассировке запросов, посылаемых Axapta на MS SQL Server, можно увидеть, что в конце запроса присутствует конструкция OPTION(FAST 20) либо OPTION(FAST 1). Кто-нибудь знает инструмент Axapta для управления добавлением/удалением этой инструкции.
Старый 25.06.2004, 16:47   #2  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Так Axapta передает ожидаемое количество строк, которые вернет запрос. У меня иногда бывает и FAST 60, например.

Управлять этим параметром можно в очень ограниченном объеме: если select передать firstfast, то на сервер уйдет FAST 1; firstonly у меня почему-то преобразуется в FAST 2.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 25.06.2004, 16:50   #3  
Ю-ю is offline
Ю-ю
Участник
 
23 / 10 (1) +
Регистрация: 23.04.2004
Адрес: Москва
А каким образом получилось 60, Вы что-нибудь для этого делали?
Старый 25.06.2004, 16:58   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Я сделал запрос с LIKE (то есть запрос Axapta не сводила к Index Seek, а делала полный перебор) по таблице LedgerTable.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 25.06.2004, 17:21   #5  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Нюансов много. Например, для простого SELECT TABLE1 значение для (FAST n) считается как Buffer size / длина записи

Buffer size - это параметр Buffer Size в Configuration Utility на закладке Database. В 2.5. и 3.0 значение по умолчанию - 24 Кб

Длина записи - сумма длин ее полей

Т.е. если создать таблицу TABLE1 с одним строковым полем длиной 1000 байт, запрос

PHP код:
SELECT TABLE1
даст OPTION(FAST 24) в профайлере

Изменим длину поля до 500 символов - получим OPTION(FAST 48)

Как точно считается - учитывается ли длина системных полей, как округляется, как учитывается длина контейнерных полей, не выяснял, не вижу в этом смысла

Для
PHP код:
SELECT FIRSTONLY 
вроде бы всегда делается (FAST 2), есть возможность хинтами заменять на TOP, но работает, как ни странно, медленнее, чем FAST

И т.д. и т.п. Идея, видимо, в том, чтобы максимально быстро получить первую пачку записей и отобразить ее в Grid-е. Кто, когда и как в Дамгарде рассчитал, что в среднестатистический Grid помещается 24Кб - тайна, покрытая мраком

есть хороший документ от 2.5 про Cost-based optimizer и Databases Advanced от 3.0
Старый 28.06.2004, 11:19   #6  
wb is offline
wb
Участник
 
86 / 16 (1) ++
Регистрация: 26.01.2004
Адрес: Краснодар
> Databases Advanced от 3.0

имя файла и где лежит?

Заранее благодарен.
Старый 28.06.2004, 11:28   #7  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Лежит, как всегда, на партнерском сайте

http://www.axforum.info/forums/showt...abase+advanced
Старый 08.02.2006, 11:23   #8  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
А есть ли возможность каким либо образом, программно, заставить аксапту отключить этот идиотский хинт OPTION() для определенного запроса???
Через квериран или селект или ещё, хоть как ни-ть???
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 08.02.2006, 13:36   #9  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Как отключить для одного запроса не знаю, но можно выключить и включить для всего соединения
X++:
    SqlSystem   sqlSystem = new SqlSystem();
    int hints;
    ;
    hints = SqlSystem::databaseHints();
    SqlSystem::databaseHints(hints & 0xfffd);

    // ваш select или QueryRun
    
    SqlSystem::databaseHints(hints);
__________________
Axapta v.3.0 sp5 kr2
Старый 20.02.2007, 19:52   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,944 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от AndyD Посмотреть сообщение
Как отключить для одного запроса не знаю, но можно выключить и включить для всего соединения
X++:
    SqlSystem   sqlSystem = new SqlSystem();
    int hints;
    ;
    hints = SqlSystem::databaseHints();
    SqlSystem::databaseHints(hints & 0xfffd);

    // ваш select или QueryRun
    
    SqlSystem::databaseHints(hints);
AndyD, вы уверены что эта штука действует на конкретное соединение, а не на весь клиент ?
При работе на клиенте - все равно, а вот если код исполняется на сервере приложения, то запуск такого кода из под одного пользователя не повляияет ли на работу других ?
Теги
databasehints, fast, option, sql

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поиск места вызова SQL запроса eLLoco DAX: Программирование 17 25.09.2007 08:49
Экспорт результатов SQL запроса в CSV adandreev DAX: Программирование 14 13.07.2007 11:59
Вставка значения container в план запроса SQL mit DAX: Программирование 4 24.11.2005 18:42
Как реализовать Query или View на примере такого T-SQL запроса для OLAP? sao DAX: Программирование 9 07.10.2005 18:57
Формирование sql запроса по Ctrl + F if_maks DAX: Программирование 2 08.10.2003 20:04
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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