|
|
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
wadmanВот я на что намекаю Вот план, для запроса: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:21 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Точнее запрос такой: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:23 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, план не того запроса приводишь. Этот запрос наверняка быстро выполняется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:26 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, план не того запроса приводишь. Этот запрос наверняка быстро выполняется да, быстро - но он работает медленнее если написать так: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:32 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, приведи план вот этого запроса Код: sql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:34 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Т.е. firebird не может никак выполнить один раз мой sp_tree1 и потом его использовать как таблицу при join'e Я показал пример на простых запроса (мой же гораздо сложнее) и применение ХП во from'e вместе с join'ом как не мудри с sql-запросом, но на больших данных выполняется медленнее и оптимизатор FB туповат чтобы догадаться что нужно, приходиться ему подсказывать и засовывать вручную результат ХП во временную таблицу и уже потом отдельным запросом в join'e с этой временной таблицей выполнять запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:35 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, приведи план вот этого запроса нет возможности, мой вывод применения sp_tree постом выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:36 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, ты достал. Тебе говорят что может в определённых условиях. Где план? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:36 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012он работает медленнее если написать так: Врёшь. Приведённый запрос не может давать такой план: в нём нет места сортировке. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:39 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисТебе говорят что может в определённых условиях спокойствие, я понял что FB может,но видать в простых случаях - на более сложных запросах оптимизатор слабоват ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:40 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012оптимизатор FB туповат чтобы догадаться что нужно, приходиться ему подсказывать для оптимизатора процедура всегда "черный ящик", просто потому что там может быть условное ветвление, туча разных запросов, которые могут выполняться, а могут не выполняться, или вообще может не быть никаких запросов. http://www.ibase.ru/devinfo/dataaccesspaths.htm fedorov2012на более сложных запросах оптимизатор слабоват нужно критически относиться в первую очередь к себе, а не считать всех вокруг идиотами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:42 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВрёшь. Нет - в ХП (sp_tree1) есть сортировка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:43 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, ты не хочешь решения проблемы. Тебе говорят, что если будет план MERGE по обоим ХП, то обе они выполняться по 1 разу. Правда будут потери производительности на сортировке миллионов записей t1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:43 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
kdvнужно критически относиться в первую очередь к себе, а не считать всех вокруг идиотами. Ну согласитесь, предела совершенствованию оптимизатора СУБД нет пределов, никто не мешает понять что параметр parent_tree1 не меняется на всем протяжении запроса, а значит и смысл дергать sp_tree1 многократно нет. Идиотами никого не считаю, FB - вещь мощная, но оптимизатор мог быть и по умнее, я уверен в старших версиях разработчика внесут эти исправления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:46 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисТебе говорят, что если будет план MERGE по обоим ХП, то обе они выполняться по 1 разу. Ответь да или нет - можно ли в самом sql-запросе поменять (местами или еще как-то), чтобы в плане был MERGE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:49 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, тройка вместо MERGE может использоваться HASH. Но я сомневаюсь, что это сильно поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:50 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012Т.е. firebird не может никак выполнить один раз мой sp_tree1 и потом его использовать как таблицу при join'e Я показал пример на простых запроса (мой же гораздо сложнее) и применение ХП во from'e вместе с join'ом как не мудри с sql-запросом, но на больших данных выполняется медленнее и оптимизатор FB туповат чтобы догадаться что нужно, приходиться ему подсказывать и засовывать вручную результат ХП во временную таблицу и уже потом отдельным запросом в join'e с этой временной таблицей выполнять запрос Попробуй как так Код: plsql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:52 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, Код: sql 1. 2. 3. 4. 5. 6. Так по идее должен быть план MERGE. Но будет ли он быстрее сказать не могу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:52 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012Нет - в ХП (sp_tree1) есть сортировка В этом случае она отображалась бы в другом месте плана. А у тебя в плане она стоит крайней слева, что означает последнюю операцию после всех выборок. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:52 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012никто не мешает понять что параметр parent_tree1 не меняется на всем протяжении запроса, а значит и смысл дергать sp_tree1 многократно нет. Она и дёргается однократно, поэтому в плане TR1 NATURAL. Покажи статистику индекса FK_TABLE1 и результат SHOW DATABASE из isql. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 13:58 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012Ну согласитесь, предела совершенствованию оптимизатора СУБД нет пределов Есть. Причём весьма жёсткие. Если мой ХШ не врёт, ты пытаешься из таблицы выбрать записи, которые принадлежать одновременно двум заданным группам (или любой их подгруппе). В этом случае обломись, структура твоей БД совершенно не подходит для таких запросов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:10 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Сейчас я в качестве временной таблицы использую свою в базе, но в FB2.5 есть и свои - слышал лучше их использовать мол быстрее. В связи с чем вопрос - что нужно посмотреть для примера работы с этими таблица README.common_table_expressions.txt ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:20 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, CTE к временным таблицам никаким боком не относится. А вот выкинуть твои рекурсивные процедуры и переписать на рекурсивные запросы возможно поможет. По времянкам README.global_temporary_tables ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:22 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012но в FB2.5 есть и свои - слышал лучше их использовать мол быстрее Интересный слух... Источник сомнению не подлежит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:24 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
GLOBAL TEMPORARY TABLE - судя по описанию эти так называемые временные таблицы также физически существуют в БД. Мне, казалось, что вызвал функцию FB передал нужные параметры и все. Похоже ближе COMMON TEMPORARY TABLE: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:37 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38778600&tid=1563247]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 348ms |

| 0 / 0 |
