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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.01.2004, 11:21   #1  
Atani is offline
Atani
Участник
 
77 / 15 (1) ++
Регистрация: 25.07.2003
Адрес: г. Королёв М.О.
Сложные while select-запросы или вложенные циклы
Warmr в сообщении http://www.axforum.info/forums/showt...5400#post25400 сказал, что while select запрос с join'ом всё равно на SQL-сервере исполняется как два цикла. Или утверждение относилось только к join'у с временной таблицей? Есть ли тогда смысл писать сложные sql-запросы?

С уважением, Сергей
Старый 30.01.2004, 11:47   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Сложные while select
В том топике говорилось про join постоянной и временной таблицы.

Если возникает необходимость написать запрос с большим количеством join-ов (> 3), то имеет смысл рассмотреть варианты с разделением на 2. Так как план построения и время выполнения сложных запросов сильно зависит от наполнения базы данных (количество строк, состояния индексов, наложенных ограничений и т.п.) и опыт показывает, что такие запросы часто приводят к неожиданному торможению системы (вчера работало, а сегодня все висит).
Старый 30.01.2004, 12:35   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
или пользуйтесь хинтами типа forcenestedloop.

хотя согласен с Wamr. Сложные запросы - опасная вещь на больших базах и при большом количестве пользователей
Старый 30.01.2004, 14:15   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Изначально опубликовано mazzy
или пользуйтесь хинтами типа forcenestedloop.

хотя согласен с Wamr. Сложные запросы - опасная вещь на больших базах и при большом количестве пользователей
ничего не имею против forcenestedloop , однако

Обычно те, кто пользуются хинтами, знают, как они работают, на что влияют и умеют читать план запроса. Так что у них таких вопросов не возникает. А наобум пользоваться хинтами по принципу "большое время выполнения - используйте хинт такой-то", мягко говоря, чревато..

По поводу опасности - скорее надо просто аккуратно к ним относиться: тестировать, мониторить, обновлять статистики.. И не бояться экспериментировать с индексами

На прошлой работе запросы с десятком join-ов таблиц в десятки тысяч - миллионы записей были если не нормой, то вполне обычным делом. И все жило, под чутким присмотром..

Прошу воспринимать как мысли вслух, а не наезд
Старый 30.01.2004, 14:26   #5  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Vadik, полностью согласен
Цитата:
И все жило, под чутким присмотром
Лично мне лень заниматься чутким присмотром
Цитата:
И не бояться экспериментировать с индексами
При круглосуточной работе мне (не мне - админу) никто не даст переиндексировать InvntTrans
Старый 30.01.2004, 14:39   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Vadik
Обычно те, кто пользуются хинтами, знают, как они работают, на что влияют и умеют читать план запроса. Так что у них таких вопросов не возникает.
Да, согласен.
Старый 03.02.2004, 09:24   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Я несколько припозднился, но если не сложно, ответьте новичку на несколько глупых вопросов:

1) Что подразумевается под словами "сложный запрос" применительно к Axapta?
2) Будет ли разница в скорости выполнения такой конструкции:

PHP код:
while select from Tab1
       join form Tab2 where 
...
       
join from Tab3 where ...

      
select firstonly Tab4 where Tab4.Field==Tab3.Field
И аналогичной конструкции, в которой Tab4 включена в основной select? Разумеется, при этом подразумевается, что результат выборки будет одинаковый в обоих случаях.

3) Что такое временные таблицы в Axapta и как они создаются?
Старый 03.02.2004, 11:07   #8  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
? Хинты
Цитата:
Изначально опубликовано mazzy
или пользуйтесь хинтами типа forcenestedloop.
Присоединяясь к предыдущему участнику, в свою очередь задам свои глупые вопросы:

1. Что такое "хинты", где про них почитать и как можно научиться ими пользоваться?
2. Имеет ли это отношение к использованию index и index hint в select-е?
3. Или же имеются ввиду т.н. "qualifiers", а именно:
- reverse
- firstFast
- firstonly
- forupdate
- nbofetch
- forceSelectOrder
- forceNestedLoop
- forceLiterals
- forcePlaceholders
4. Если да, то подскажите, где искать про них информацию? В Dev. Guide и Best Practices как-то все разрозненно и вскользь, вобщем, как обычно

Заранее спасибо!
__________________
Старый 03.02.2004, 11:12   #9  
ushastik is offline
ushastik
Участник
 
88 / 12 (1) ++
Регистрация: 27.01.2004
Адрес: Южный Федеральный Округ
Владимир Максимов:
Будет разница, но что лучше пользовать зависит от количества строк в цикле и оn плана запроса при добавлении еще одной таблицы в запрос. Только строить план и смотреть - общего решения не существует.

Ruff:
Я сам с ораклом работаю - читать надо в документации к твоей СУБД. То есть MSSQL.
Старый 03.02.2004, 13:06   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Хинты
Цитата:
Изначально опубликовано Ruff
1. Что такое "хинты", где про них почитать и как можно научиться ими пользоваться?
http://technet.navision.com/usered/A...01.00-ENUS.doc
Старый 03.02.2004, 13:46   #11  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Спасибо, нашел!
__________________
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Вложенные запросы в аксапте Protey DAX: Программирование 3 07.11.2006 09:52
Сложные запросы в RLS Ruff DAX: Администрирование 12 30.08.2005 18:02
Сложные SQL запросы Alks DAX: Программирование 8 19.08.2004 10:58
Вложенные циклы while linney DAX: Программирование 3 29.07.2004 12:06

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

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

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