|
|
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисвыкинуть твои рекурсивные процедуры и переписать на рекурсивные запросы возможно поможет. Если мой ХШ прав, то наверняка поможет денормализовать ключ дерева и выкинуть из запроса обращение к нему вообще. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:40 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
ХШ - это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:58 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, ещё раз повторю CTE не имеет отношения к временным таблицам. Считай это вьюхой создаваемой на лету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 14:59 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012ХШ - это что? Хрустальный Шар у особо продвинутых экстрасенсов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:16 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012COMMON TEMPORARY TABLE CTE = Common TABLE Expressions а временные таблицы - это Global Temporary Tables, GTT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:16 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
kdvвременные таблицы - это Global Temporary Tables, GTT. Есть ли преимущество использование FBшных временных таблиц, перед собственной У меня такая где SESSION_ID - уникальное значение сессии (выполняемого sql-запроса) Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:23 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, есть. Как минимум не надо ломать голову с SESSION_ID Почитай уже Firebird 2.1 Release Notes ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:37 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, есть. Как минимум не надо ломать голову с SESSION_ID А с т.зр. скорости работы - можно сказать, что использование временных таблиц FB предпочтительнее, потому что они быстрее работают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:40 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, c GTT у тебя мусор так не будет копиться. Следовательно и проблемы производительности при его сборке пропадут. Но вообще это не панацея. Лучше уж оптимизировать алгоритм так чтобы не нужно было GTT задействовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 15:59 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, c GTT у тебя мусор так не будет копиться. Следовательно и проблемы производительности при его сборке пропадут. Правильно написал: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:16 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, нет. Может всё таки в синтаксис оператора создания таблиц уже заглянуть? Нету в FB возможности так делать Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:28 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисНету в FB возможности так делать Код: sql 1. В инструкции FB нет примера, большая просьба напишите как должно выглядеть в моем случае p.s. юзад здесь тоже ничего не дало http://www.forum.mista.ru/topic.php?id=582653 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:39 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, в каком в "твоем случае"? И пример есть http://www.firebirdsql.org/refdocs/langrefupd21-ddl-table.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 16:42 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
kdvв каком в "твоем случае"? Я что-то запутался c CREATE GLOBAL TEMPORARY. Что-то подобное с помощью CREATE GLOBAL TEMPORARY можно сделать в одном sql-запросе или же CREATE GLOBAL TEMPORARY работает только в рамка скрипта и запускать его нужно в execute block : Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:22 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
GTT создаётся (как и обычная таблица) разово, а используется - по мере надобности. Данные в таблицы живут или до фиксации транзакции (по умолчанию) или до закрытия соединения (on commit preserve row). Таким образом, каждое подключение к БД может работать с индивидуальным набором данных в одноимённой временной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:27 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Получается FB физически а не виртуально создает TEMPORARY TABLE kdvИ пример есть http://www.firebirdsql.org/refdocs/langrefupd21-ddl-table.html Кстати в примере после отработки create global temporary table стоит commit. Вопрос - тогда как же будет удаляться temporary table вручную самому вызывать drop. Какой замудренный механизм, не ужели нельзя было сделать по принципу "execute block" для хранимой процедуры, который работает как обычный sql-запрос, а не скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:29 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovТаким образом, каждое подключение к БД может работать с индивидуальным набором данных в одноимённой временной таблице. Ну тогда особой разницы между моим tmp_table нет, мне казалось, что у FB temporary table виртуальная. Кстати обычную таблицу, уже имеющуюся в БД, можно ли сконвертировать как-то в temporary table? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:32 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012Ну тогда особой разницы между моим tmp_table нет Есть: 1) Подумай как ты удаляешь из своих таблиц данные отпавших коннектов. 2) Как ты добьёшься от своих таблиц быть в ОЗУ, не сбрасываясь на диск без крайней необходимости. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:45 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovfedorov2012Ну тогда особой разницы между моим tmp_table нет Есть: 1) Подумай как ты удаляешь из своих таблиц данные отпавших коннектов. С этим все просто - использование tmp_table у меня идет для запросов на select и транзакцию я не commit, поэтому данные никогда физически в tmp_table не сохранятся fedorov20122) Как ты добьёшься от своих таблиц быть в ОЗУ, не сбрасываясь на диск без крайней необходимости. А разве данные будут сбрасываться на диск, если запрос делается в транзакции, которая в итоге не коммититься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 19:51 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012С этим все просто - использование tmp_table у меня идет для запросов на select и транзакцию я не commit, поэтому данные никогда физически в tmp_table не сохранятся Ну так работай с временной таблицей чего противишся-то? fedorov2012А разве данные будут сбрасываться на диск, если запрос делается в транзакции, которая в итоге не коммититься? В общем случае да, в твоем частном случае иногда(а может и всегда) вполне возможно что и нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:02 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Кстати обычную таблицу, уже имеющуюся в БД, можно ли сконвертировать как-то в temporary table? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:17 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:21 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, нет а можно TEMPORARY TABLE использовать как обычную таблицу т.е. вставлять/удалять туда значение коммитить их? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:22 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
fedorov2012, если GTT будет уровня транзакции то после коммита твои вставленные записи тютю, если уровня соединения, то останутся но ровно до тех пор, пока есть соединение. При дисконнекте он тоже тютю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:27 |
|
||
|
Избежать временных таблиц
|
|||
|---|---|---|---|
|
#18+
Симонов Денисfedorov2012, если GTT будет уровня транзакции то т.е. когда я делаю CREATE GLOBAL TEMPORARY TABLE я должен четко сказать какая у меня ON COMMIT {DELETE или PRESERVE} ROWS (delete т.е. после коммита транзакции данные удалятся)? можно ли использовать индексы и т.п. т.е. правильно ли я понимаю TEMPORARY TABLE от обычной TABLE в FB особо ничем не отличается (только тем, что описано ранее) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2014, 20:33 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38778689&tid=1563247]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 511ms |

| 0 / 0 |
