|
|
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
tinijivitkhv, ИМХО vitkhv и Naf привели абсолютно почти 2 одинаковых запроса. Почти одинаковые, но только почти. Только у Naf, в SQL будет транслированно тоже самое, что и при таком запросе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Согласитесь разница все же есть, т.к. ведущей таблицей у нас становиться Табличная Часть товары, а что будет если у документа нет строк в табличной части товары? Такой документ просто не попадет в запрос. И результат запроса Naf будет идеентичен вот такому запросу с Внутренним соединением : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Согласитесь все таки есть разница между Левым соединением и подзапросом в моем варианте запроса и Внутренним соединением в мною приведенным примере и варианте Naf . А из топика собственно непонятно, а подойдет ли такой вариант автору (у автора идет через левое соединение т.е. в результат запроса должны попасть все документы и без разницы, есть там товары или нет ). + ко всему запрос с Внутренним соединением будет работать быстрее , чем запрос приведенный NAF. План варианта запроса с Внутренним соединением не будет тратить время на агрегирование (Хотя оно там есть в секции Сгруппировать ПО) и план такого запроса будет практически идентичен моему варианту запроса с подзапросом в секции Левое соединение + в варианте Naf будет тем больше времени уходить на "ненужное" агрегирование, чем больше полей у нас будет участвовать всекции СГРУППИРОВАТЬ ПО и я об этом уже писал Сравните господа планы запросов и убедитесь сами. P.S. Все таки ведущая таблица (ведущая таблица это та которая находится в секции ИЗ ) в запросе имеет большое значение для производительности, почитайте об этом в форуме про MS SQL. Я когда искал работу, собеседовался с Мега 1С ником, был вопрос про то чем отличается Левое соединение от правого и когда я ему стал говорить про ведущие таблицы он меня просто не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 15:59 |
|
||
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
Зато код, написанный Naf, гораздо читабельнее и понятнее. Стоит ли оптимизировать ВСЕ запросы по скорости? Не думаю. Это удел единичных запросов в модулях проведения. На этапе анализа "узких мест". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 16:16 |
|
||
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
Искандер Двурогий Как раз Naf написал правильнее всех. Именно так и рекомендуют сейчас писать разработчики платформы. А остальные никому не нужными извращениями занимаются. Да 1С сама так пишет, а всем остальным смертным рекомендует вот это Программист 1С Но в целом вы правы 1с не рекомендует 2 точки. На экзамене - -0,5 бала. 1С через две точки пишет обычно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Что при разборе запроса в парсере и отправке серверу, будет идентично вот такому написанию запроса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. т.е. парсер за вас просто добавит левое соединение, что очень удобно, и я сам в таком случае сам пишу через вторую точку т.к. в любой случае будет ясно, что сделает 1С с таким запросом перед отрправкой на сервер. Да и программисты 1С обычно не путаются как и где использовать ведущие таблицы. Ведь зачем лезть в табличную часть товары чтобы в итоге все поля получать из шапки, да еще и терять в производительности на СГРУППИРОВАТЬ ПО? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 16:17 |
|
||
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
СисойЗато код, написанный Naf, гораздо читабельнее и понятнее. Стоит ли оптимизировать ВСЕ запросы по скорости? Не думаю. Это удел единичных запросов в модулях проведения. На этапе анализа "узких мест". 1. У вариатна Naf есть существенный недостаток, при увелечении количества полей в секции СГРУППИРОВАТЬ ПО существенно падает скорость запроса, если при 2 х полях это 10 % медленней, то при 4 полях это уже порядка на 50 % медленней. Согласитесь, что это уже даже в отчетах критично. 2. Вариант Naf вернет данные идентично вот этому запросу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Разве такой вариант не читабельней варианта Naf? Да к тому же и быстрее т.к. в этом запросе нет потери производительности в секции СГРУППИРОВАТЬ ПО. А всего та, заменили ведущую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 16:30 |
|
||
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
vitkhv P.S. Все таки ведущая таблица (ведущая таблица это та которая находится в секции ИЗ ) в запросе имеет большое значение для производительности, почитайте об этом в форуме про MS SQL. Я когда искал работу, собеседовался с Мега 1С ником, был вопрос про то чем отличается Левое соединение от правого и когда я ему стал говорить про ведущие таблицы он меня просто не понял. Я бы тоже не понял, потому что конструктор запросов "Правое" превращает в "Левое". P.S. А где можно почитать про оптимизацию в SQL? Может книжки какие есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 16:43 |
|
||
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
tinijivitkhv P.S. Все таки ведущая таблица (ведущая таблица это та которая находится в секции ИЗ ) в запросе имеет большое значение для производительности, почитайте об этом в форуме про MS SQL. Я когда искал работу, собеседовался с Мега 1С ником, был вопрос про то чем отличается Левое соединение от правого и когда я ему стал говорить про ведущие таблицы он меня просто не понял. Я бы тоже не понял, потому что конструктор запросов "Правое" превращает в "Левое". P.S. А где можно почитать про оптимизацию в SQL? Может книжки какие есть?Насколько я помню скуль сам может поменять в плане запроса правое на левое... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 16:48 |
|
||
|
Помогите, запрос с вложенным подзапросом
|
|||
|---|---|---|---|
|
#18+
tiniji Я бы тоже не понял, потому что конструктор запросов "Правое" превращает в "Левое". P.S. А где можно почитать про оптимизацию в SQL? Может книжки какие есть? Конструктором особо не пользуюсь, поэтому не скажу что он там меняет. Книжку я в свое время читал - SQL для профессионалов. Дэн Тоу. Но не очень она мне понравилась т.к. там все вместе и планы запросов в Oracle, и в DB2 и в MS SQL. Еще помоему в Сибэйз. Меня только MS SQL интерсовал. Поэтому все остальное было лишним. А так в основном читал форум на этом сайте по MS SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2010, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=28&startmsg=36756869&tid=1522155]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
223ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 542ms |

| 0 / 0 |
