|
Какие запросы лучше вложенные или в виде временных таблиц и почему? | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
izekia
02.08.12
✎
17:58
|
По мотивам Готов поработать падаваном
|
|||||||
1
Нуф-Нуф
02.08.12
✎
17:58
|
зависит от запроса
|
|||||||
2
Нуф-Нуф
02.08.12
✎
17:59
|
в большей части предпочтительно временные
В виде временных таблиц |
|||||||
3
Нуф-Нуф
02.08.12
✎
17:59
|
начни готовиться к эксперту - много нового узнаешь
|
|||||||
4
izekia
02.08.12
✎
18:00
|
(3) спасибо, мнение 1С по этому поводу я знаю
|
|||||||
5
H A D G E H O G s
02.08.12
✎
18:01
|
Гыы. Если ТемпДБ вынести на RAM диск - тогда - Временные.
|
|||||||
6
izekia
02.08.12
✎
18:01
|
(5) а если рамдиска нет?
|
|||||||
7
H A D G E H O G s
02.08.12
✎
18:01
|
Главное не допускать того, что temp DB вырастет больше RAM диска.
|
|||||||
8
H A D G E H O G s
02.08.12
✎
18:02
|
(6) Тебе 1 гига памяти жалко?
|
|||||||
9
DrShad
02.08.12
✎
18:02
|
тоже предпочитаю ВТ - их и читать удобнее и тестить да и уничтожать прикольно
В виде временных таблиц |
|||||||
10
izekia
02.08.12
✎
18:02
|
(8) мне 16ти то нехватает)
|
|||||||
11
H A D G E H O G s
02.08.12
✎
18:02
|
Ну не умеет 1С работать с #table
|
|||||||
12
izekia
02.08.12
✎
18:02
|
не хватает*
|
|||||||
13
DrShad
02.08.12
✎
18:04
|
(12) ты свой голос не изъявил
|
|||||||
14
H A D G E H O G s
02.08.12
✎
18:04
|
Временные еще и индексировать можно, только редко когда нужно :-)
|
|||||||
15
Нуф-Нуф
02.08.12
✎
18:05
|
были случаи когда замены вложенных на временные снижали время выполнения запроса с 4 минут до 5 секунд
|
|||||||
16
izekia
02.08.12
✎
18:05
|
(13) да, я склоняюсь ко временным, но не всегда)
думаю третий пункт забыл В виде временных таблиц |
|||||||
17
izekia
02.08.12
✎
18:07
|
(15) круто, хочу пример)
|
|||||||
18
H A D G E H O G s
02.08.12
✎
18:08
|
http://www.sql.ru/forum/actualthread.aspx?tid=268209
Однако мне кажется что есть резерв у временных таблиц. Подозреваю что на них не распостраняется commit в полной мере. Это надо проверить. Но сложилось впечатление, что MS SQL 2005 часто (иногда?) оставляет их в памяти и не пишет на диск даже при commit. Временные ведь... Так и есть, я вообще наблюдаю нулевую дисковую активность на дисках где лежит tempdb в SQL2k5 - нет активности ни на диске где лог, ни на дисках где лежат данные tempdb. При этом временные таблицы используются. |
|||||||
19
viktor_vv
02.08.12
✎
18:21
|
(17) Так вполне может быть. Я правда на 77 в 1С++ с вложенными получал тормоза, для этого много ума не надо.
Причем на время еще может влиять и другие факторы, как там план запроса Скуль построит. Один и тот же запрос при разных значениях праметра по разному выполняется. Вроде потестил, нормально, начали работать, поставили период побольше, причем и не сильно намного, и сидят курят. Переписал через временные и стабильно быстро работает. |
|||||||
20
H A D G E H O G s
02.08.12
✎
18:24
|
Счаст придет ascent и скажет, что вы все не попадаете в индекс
|
|||||||
21
МихаилМ
02.08.12
✎
18:25
|
для разных субд будет по-разному.
так что тема бессмысленна. |
|||||||
22
Нуф-Нуф
02.08.12
✎
18:26
|
(21) речь про скуль. доля остальных минимальна и в основном связана с нищебродством
|
|||||||
23
viktor_vv
02.08.12
✎
18:28
|
(22) Ну Скуль он типа тоже разный бывает.
|
|||||||
24
izekia
02.08.12
✎
18:29
|
(20) сейчас на лестницу выходил, могу с уверенностью сказать, что я 5ти метров я в индекс попадаю
|
|||||||
25
H A D G E H O G s
02.08.12
✎
18:29
|
(21) Вы - бессмысленны. Это - по наблюдениям за вашими советами за последнее время.
|
|||||||
26
viktor_vv
02.08.12
✎
18:30
|
(23)+ А понял, ты про православный MS .
|
|||||||
27
rphosts
02.08.12
✎
18:32
|
(22) это оракул и ДБ2 от крайнего нищебродства?
|
|||||||
28
izekia
02.08.12
✎
18:34
|
(25) та ты читаешь еще то что после его ника написано? я обхожу обычно
|
|||||||
29
izekia
02.08.12
✎
18:35
|
(27) ну да, нет чтобы для 1С купить свой сервер от мс, пытаются впихнуть все на тот который используется для производственных целей
|
|||||||
30
rphosts
02.08.12
✎
18:35
|
при рабьоет в временными таблицами 1С уже знает размер выполненой выборки что позволяет выбрать оптимальный план выполнения, кроме того как уже писали можно проиндексировать временную таблицу, так что кроме сверхмалых выборок с временные будет быстрее, со сверхмалыми медленнее т.к. будут делаться доп операции, но там разница на грани погрешности замера.
|
|||||||
31
rs_trade
02.08.12
✎
18:36
|
(27) платную ДБ2 кто нить вообще видел в глаза?
|
|||||||
32
rphosts
02.08.12
✎
18:37
|
(29) не говори ерунды! лучше почитай Вячеслава Гилева. мс в подмётки не годится ни ДБ2 ни Оракулу
|
|||||||
33
rphosts
02.08.12
✎
18:38
|
(31) ещё лет 12 назад в ПФР, а что? Под оракул сам писал (тоже купленвый, базы работали на дековских серверах).
|
|||||||
34
Нуф-Нуф
02.08.12
✎
18:38
|
(30) не 1с знает, а скуль :)
|
|||||||
35
H A D G E H O G s
02.08.12
✎
18:38
|
(30) Как же запись на диск? Вот сожрет SQL всю память индексами и что делать :-) Только RAM. Ну а че, я бы гиг выделил.
Интересно, есть ли настройка SQL принудительно сбрасывать tempDB на диск. Чтобы он точно RAm диск юзал а не висел в оперативке. Померить бы. |
|||||||
36
izekia
02.08.12
✎
18:40
|
(32) это не ерунда ... это шутка)
|
|||||||
37
H A D G E H O G s
02.08.12
✎
18:41
|
(32) Можно ссылку?
|
|||||||
38
abitfrosty
02.08.12
✎
18:44
|
В КБ 1с есть очень хорошая статья на эту тему.
В кратце: если большие объемы данных и к ним предполагается частое обращение (допустим больше 1 раза за сеанс) то ВТ без вопросов. Во всех остальных случаях - вложенный будет быстрее. Разница как уже писали во времени создания таблицы, и построения индекса, если используется. |
|||||||
39
izekia
02.08.12
✎
18:49
|
еще интересный момент, мне один раз поведали историю, как человек не прошел сертификацию именно из-за того, что использовал вложенные запросы
|
|||||||
40
rphosts
02.08.12
✎
18:53
|
(37) при случае поищу - сейчас уже спать зовут
|
|||||||
41
H A D G E H O G s
02.08.12
✎
18:55
|
(40) Спать в 10 вечера ? Окстись!
|
|||||||
42
Humandra
02.08.12
✎
19:03
|
(38) Я бы добавила - временные быстрее там, где вложенный запрос сложен и MS SQL может неверно выбрать план запроса. А вложенные быстрее там, где либо tempDB лежит в неудачном месте и нагрузка на него велика, либо на простых запросах (просто потому, что план запроса на таких одинаков практически в обоих случаях, а ресурсы на построение ВТ тратятся)
|
|||||||
43
izekia
02.08.12
✎
19:09
|
(41) в Кемерово 12-й час вроде
|
|||||||
44
tertva_1C
02.08.12
✎
19:24
|
!я стараюсь использовать только ВТ, ибо какая разница клиенту как запрос написал если он выпоняется на сторне сервера.... да и отлаживать такие запросы гораздо легче....
|
|||||||
45
Mafoni
02.08.12
✎
20:11
|
(15) - прав на 100% - и у меня были такие случаи. + индексирование в ВТ позволяло существенно ускорить работу запроса.
|
|||||||
46
Sakura
02.08.12
✎
20:15
|
(43) 3 часа разницы с Москвой. Это я, как Новокузнечанин вам говорю.
|
|||||||
47
ДенисЧ
02.08.12
✎
20:18
|
(46) Как кто???
|
|||||||
48
izekia
02.08.12
✎
20:18
|
(46) забыл значит, что перевели тоже, когда уезжал +4 было
|
|||||||
49
izekia
02.08.12
✎
20:19
|
(47) вот и провалился тщательно подготавливаемый миф про Казань
|
|||||||
50
Sakura
02.08.12
✎
20:20
|
(47) Ты последнее время меня пугаешь.
Путаешь пакетные запросы с обычными, простые фразы осилить не можешь. Как Новокузнечанин, что не так? |
|||||||
51
Sakura
02.08.12
✎
20:21
|
(49) Какая Казань, я родился в Новокузнецке!
|
|||||||
52
Базис
naïve
02.08.12
✎
20:23
|
(51) Мадам! У вас пол поломался?
|
|||||||
53
Sakura
02.08.12
✎
20:34
|
С полом все хорошо :-)
|
|||||||
54
Sakura
02.08.12
✎
20:37
|
И я - не мадам, я H A D G E H O G s! (гордо)
Мадам пока посуду моет - я за нее! |
|||||||
56
Лефмихалыч
02.08.12
✎
21:25
|
(0) что лучше - яблоки или скорость звука?
|
|||||||
57
rphosts
03.08.12
✎
04:08
|
(41) младшая отказывается спать пока "папа за компом!", ну вот навскидку: http://www.gilev.ru/1c/81/db2/
|
|||||||
58
rphosts
03.08.12
✎
04:10
|
(54) что там такое у вас вообще творится!!! Харда взломали детектед!!!!
|
|||||||
59
Gobseck
03.08.12
✎
04:44
|
Легче отлаживать.
В виде временных таблиц |
|||||||
60
rphosts
03.08.12
✎
05:38
|
1. В виде временных таблиц.
Кста, Е.Гилёв на своих курсах тоже говорит за временные таблицы в подавляющем большинстве случаев. В виде временных таблиц |
|||||||
61
alkov
03.08.12
✎
06:44
|
(9),(59) В чём лёгкость отладки ВТ?
|
|||||||
62
rphosts
03.08.12
✎
06:48
|
(61) можно сохранить в менеджер ВТ. Это позволяет увидеть в отладчике что там навыбирала та часть запроса + многократно использовать то что уже навыбиралось.
|
|||||||
63
H A D G E H O G s
03.08.12
✎
08:43
|
(58) Все хорошо. Мы уже расцепились и расползлись по своим учеткам.
|
|||||||
64
SoulPower
03.08.12
✎
09:12
|
Субд с большей вероятностью подберет оптимальный план выполнения запроса. Ещё проще отлаживать.
В виде временных таблиц |
|||||||
65
TormozIT
гуру
03.08.12
✎
09:37
|
Что лучше декларативное описание выборки или алгоритмическое?
Думаю временная таблица оправдана, если размер ожидаемый выборки в нее будет не космическим и (группа ИЛИ) - ее подзапрос встречается в запросе более одного раза - запрос очень сложный, а со временной таблицей он читается легче - СУБД использует неэффективный план выполнения запроса, а со временной таблицей - эффективный (запрос выполняется быстрее) |
|||||||
66
Ns33
03.08.12
✎
10:21
|
Кроме плана запроса и упрощения отладки для меня большой плюс удобочитаемость. Давая понятные имена временным таблицам, получается нечто похожее на функции.
Также, чтобы редактировать запрос конструктором, стараюсь не делать конструирование запроса из строк вида: Текст="Выбрать Поле1 ИЗ Таблица1"; Если НекоеУсловие Тогда Текст=Текст+" ГДЕ Поле2=ИСТИНА"; КонецЕсли; Делаю так: Текст="Выбрать Поле1 ИЗ Таблица1 ГДЕ 1 = 1"; Если НекоеУсловие Тогда Текст=СтрЗаменить(Текст,"1 = 1", "Поле2=ИСТИНА"); КонецЕсли; В виде временных таблиц |
|||||||
67
Sakura
03.08.12
✎
10:57
|
(58) нам можно =)
|
|||||||
68
MaxisUssr
03.08.12
✎
11:01
|
Конечно же ВТ!
Кстати, при ВТ СУБД создает эту ВТ один раз и держит в памяти (потом с ней идут соединения и т.д.). Как с этим обстоят дела при вложенном запросе - он выполняется для каждой строки (что врядли, т.к. тупо) , или же СУБД также пытается оптимизировать его выполнение и он выполняется 1 раз? В виде временных таблиц |
|||||||
69
wowik
03.08.12
✎
11:20
|
практика показывает
В виде временных таблиц |
|||||||
70
izekia
03.08.12
✎
19:46
|
(68) план всегда надо смотреть
вот например в этом запросе: v8: Поясните почему не работает запрос? если бы я использовал ВТ, то ошибки бы не возникало но более правильно при повторном использовании данных, особенно когда изначально можно сделать выборку из большой таблицы, лучше использовать ВТ столкнулся с этим еще когда писал запросы на семерке, где все было построено на периодических реквизитах, и _1SConst составлял половину базы по размеру |
|||||||
71
izekia
03.08.12
✎
19:47
|
правда там я использовал тип Table, но здесь он недоступен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |