30.01.2004, 11:21 | #1 |
Участник
|
Сложные while select-запросы или вложенные циклы
Warmr в сообщении http://www.axforum.info/forums/showt...5400#post25400 сказал, что while select запрос с join'ом всё равно на SQL-сервере исполняется как два цикла. Или утверждение относилось только к join'у с временной таблицей? Есть ли тогда смысл писать сложные sql-запросы?
С уважением, Сергей |
|
30.01.2004, 11:47 | #2 |
----------------
|
Сложные while select
В том топике говорилось про join постоянной и временной таблицы.
Если возникает необходимость написать запрос с большим количеством join-ов (> 3), то имеет смысл рассмотреть варианты с разделением на 2. Так как план построения и время выполнения сложных запросов сильно зависит от наполнения базы данных (количество строк, состояния индексов, наложенных ограничений и т.п.) и опыт показывает, что такие запросы часто приводят к неожиданному торможению системы (вчера работало, а сегодня все висит). |
|
30.01.2004, 12:35 | #3 |
Участник
|
или пользуйтесь хинтами типа forcenestedloop.
хотя согласен с Wamr. Сложные запросы - опасная вещь на больших базах и при большом количестве пользователей |
|
30.01.2004, 14:15 | #4 |
Модератор
|
Цитата:
Изначально опубликовано mazzy
или пользуйтесь хинтами типа forcenestedloop. хотя согласен с Wamr. Сложные запросы - опасная вещь на больших базах и при большом количестве пользователей Обычно те, кто пользуются хинтами, знают, как они работают, на что влияют и умеют читать план запроса. Так что у них таких вопросов не возникает. А наобум пользоваться хинтами по принципу "большое время выполнения - используйте хинт такой-то", мягко говоря, чревато.. По поводу опасности - скорее надо просто аккуратно к ним относиться: тестировать, мониторить, обновлять статистики.. И не бояться экспериментировать с индексами На прошлой работе запросы с десятком join-ов таблиц в десятки тысяч - миллионы записей были если не нормой, то вполне обычным делом. И все жило, под чутким присмотром.. Прошу воспринимать как мысли вслух, а не наезд |
|
30.01.2004, 14:26 | #5 |
----------------
|
Vadik, полностью согласен
Цитата:
И все жило, под чутким присмотром
Цитата:
И не бояться экспериментировать с индексами
|
|
30.01.2004, 14:39 | #6 |
Участник
|
Цитата:
Изначально опубликовано Vadik
Обычно те, кто пользуются хинтами, знают, как они работают, на что влияют и умеют читать план запроса. Так что у них таких вопросов не возникает. |
|
03.02.2004, 09:24 | #7 |
Участник
|
Я несколько припозднился, но если не сложно, ответьте новичку на несколько глупых вопросов:
1) Что подразумевается под словами "сложный запрос" применительно к Axapta? 2) Будет ли разница в скорости выполнения такой конструкции: PHP код:
3) Что такое временные таблицы в Axapta и как они создаются? |
|
03.02.2004, 11:07 | #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 как-то все разрозненно и вскользь, вобщем, как обычно Заранее спасибо!
__________________
|
|
03.02.2004, 11:12 | #9 |
Участник
|
Владимир Максимов:
Будет разница, но что лучше пользовать зависит от количества строк в цикле и оn плана запроса при добавлении еще одной таблицы в запрос. Только строить план и смотреть - общего решения не существует. Ruff: Я сам с ораклом работаю - читать надо в документации к твоей СУБД. То есть MSSQL. |
|
03.02.2004, 13:06 | #10 |
Участник
|
Re: Хинты
Цитата:
Изначально опубликовано Ruff
1. Что такое "хинты", где про них почитать и как можно научиться ими пользоваться? |
|
03.02.2004, 13:46 | #11 |
Дмитрий Ерин
|
Спасибо, нашел!
__________________
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Разница NotInTTS и Found | 6 | |||
Вложенные запросы в аксапте | 3 | |||
Сложные запросы в RLS | 12 | |||
Сложные SQL запросы | 8 | |||
Вложенные циклы while | 3 |
|