|
|
#1 |
|
Участник
|
Сложные while select-запросы или вложенные циклы
Warmr в сообщении http://www.axforum.info/forums/showt...5400#post25400 сказал, что while select запрос с join'ом всё равно на SQL-сервере исполняется как два цикла. Или утверждение относилось только к join'у с временной таблицей? Есть ли тогда смысл писать сложные sql-запросы?
С уважением, Сергей |
|
|
|
|
#2 |
|
----------------
|
Сложные while select
В том топике говорилось про join постоянной и временной таблицы.
Если возникает необходимость написать запрос с большим количеством join-ов (> 3), то имеет смысл рассмотреть варианты с разделением на 2. Так как план построения и время выполнения сложных запросов сильно зависит от наполнения базы данных (количество строк, состояния индексов, наложенных ограничений и т.п.) и опыт показывает, что такие запросы часто приводят к неожиданному торможению системы (вчера работало, а сегодня все висит). |
|
|
|
|
#3 |
|
Участник
|
или пользуйтесь хинтами типа forcenestedloop.
хотя согласен с Wamr. Сложные запросы - опасная вещь на больших базах и при большом количестве пользователей |
|
|
|
|
#4 |
|
Модератор
|
Цитата:
Изначально опубликовано mazzy
или пользуйтесь хинтами типа forcenestedloop. хотя согласен с Wamr. Сложные запросы - опасная вещь на больших базах и при большом количестве пользователей , однакоОбычно те, кто пользуются хинтами, знают, как они работают, на что влияют и умеют читать план запроса. Так что у них таких вопросов не возникает. А наобум пользоваться хинтами по принципу "большое время выполнения - используйте хинт такой-то", мягко говоря, чревато.. По поводу опасности - скорее надо просто аккуратно к ним относиться: тестировать, мониторить, обновлять статистики.. И не бояться экспериментировать с индексами На прошлой работе запросы с десятком join-ов таблиц в десятки тысяч - миллионы записей были если не нормой, то вполне обычным делом. И все жило, под чутким присмотром.. Прошу воспринимать как мысли вслух, а не наезд
|
|
|
|
|
#5 |
|
----------------
|
Vadik, полностью согласен
Цитата:
И все жило, под чутким присмотром
![]() Цитата:
И не бояться экспериментировать с индексами
|
|
|
|
|
#6 |
|
Участник
|
Цитата:
Изначально опубликовано Vadik
Обычно те, кто пользуются хинтами, знают, как они работают, на что влияют и умеют читать план запроса. Так что у них таких вопросов не возникает. |
|
|
|
|
#7 |
|
Участник
|
Я несколько припозднился, но если не сложно, ответьте новичку на несколько глупых вопросов:
1) Что подразумевается под словами "сложный запрос" применительно к Axapta? 2) Будет ли разница в скорости выполнения такой конструкции: PHP код:
3) Что такое временные таблицы в Axapta и как они создаются? |
|
|
|
|
#8 |
|
Дмитрий Ерин
|
Цитата:
Изначально опубликовано mazzy
или пользуйтесь хинтами типа forcenestedloop. 1. Что такое "хинты", где про них почитать и как можно научиться ими пользоваться? 2. Имеет ли это отношение к использованию index и index hint в select-е? 3. Или же имеются ввиду т.н. "qualifiers", а именно: - reverse - firstFast - firstonly - forupdate - nbofetch - forceSelectOrder - forceNestedLoop - forceLiterals - forcePlaceholders 4. Если да, то подскажите, где искать про них информацию? В Dev. Guide и Best Practices как-то все разрозненно и вскользь, вобщем, как обычно ![]() Заранее спасибо!
__________________
|
|
|
|
|
#9 |
|
Участник
|
Владимир Максимов:
Будет разница, но что лучше пользовать зависит от количества строк в цикле и оn плана запроса при добавлении еще одной таблицы в запрос. Только строить план и смотреть - общего решения не существует. Ruff: Я сам с ораклом работаю - читать надо в документации к твоей СУБД. То есть MSSQL. |
|
|
|
|
#10 |
|
Участник
|
Re: Хинты
Цитата:
Изначально опубликовано Ruff
1. Что такое "хинты", где про них почитать и как можно научиться ими пользоваться? |
|
|
|
|
#11 |
|
Дмитрий Ерин
|
Спасибо, нашел!
__________________
|
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Разница NotInTTS и Found | 6 | |||
| Вложенные запросы в аксапте | 3 | |||
| Сложные запросы в RLS | 12 | |||
| Сложные SQL запросы | 8 | |||
| Вложенные циклы while | 3 | |||
|