powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Избежать временных таблиц
25 сообщений из 103, страница 3 из 5
Избежать временных таблиц
    #38778689
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисвыкинуть твои рекурсивные процедуры и переписать на рекурсивные
запросы возможно поможет.
Если мой ХШ прав, то наверняка поможет денормализовать ключ дерева и выкинуть из запроса
обращение к нему вообще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778717
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ХШ - это что?
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778721
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

ещё раз повторю CTE не имеет отношения к временным таблицам. Считай это вьюхой создаваемой на лету.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778741
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012ХШ - это что?
Хрустальный Шар у особо продвинутых экстрасенсов
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778744
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012COMMON TEMPORARY TABLE
CTE = Common TABLE Expressions

а временные таблицы - это Global Temporary Tables, GTT.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778761
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvвременные таблицы - это Global Temporary Tables, GTT.
Есть ли преимущество использование FBшных временных таблиц, перед собственной
У меня такая где SESSION_ID - уникальное значение сессии (выполняемого sql-запроса)
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE TMP_TABLE (
    SESSION_ID  ID /* ID = INTEGER NOT NULL */,
    TMP_ID      ID /* ID = INTEGER NOT NULL */
);
CREATE INDEX TMP_TABLE_IDX1 ON TMP_TABLE (SESSION_ID);
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778777
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

есть. Как минимум не надо ломать голову с SESSION_ID

Почитай уже Firebird 2.1 Release Notes
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778782
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,
есть. Как минимум не надо ломать голову с SESSION_ID

А с т.зр. скорости работы - можно сказать, что использование временных таблиц FB предпочтительнее, потому что они быстрее работают.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778802
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

c GTT у тебя мусор так не будет копиться. Следовательно и проблемы производительности при его сборке пропадут.

Но вообще это не панацея. Лучше уж оптимизировать алгоритм так чтобы не нужно было GTT задействовать.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778828
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,
c GTT у тебя мусор так не будет копиться. Следовательно и проблемы производительности при его сборке пропадут.

Правильно написал:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE GLOBAL TEMPORARY TABLE TBL
ON COMMIT PRESERVE ROWS   
AS SELECT * FROM SP_TREE1(:parent_tree1)

select * 
from table1 t1
       join tbl on t1.group_id=tbl.group_id
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778845
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

нет. Может всё таки в синтаксис оператора создания таблиц уже заглянуть?

Нету в FB возможности так делать
Код: sql
1.
CREATE TABLE tablename AS SELECT ...
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778869
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисНету в FB возможности так делать
Код: sql
1.
CREATE TABLE tablename AS SELECT ...


В инструкции FB нет примера, большая просьба напишите как должно выглядеть в моем случае

p.s. юзад здесь тоже ничего не дало http://www.forum.mista.ru/topic.php?id=582653
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38778879
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

в каком в "твоем случае"? И пример есть
http://www.firebirdsql.org/refdocs/langrefupd21-ddl-table.html
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779054
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
CREATE GLOBAL TEMPORARY TABLE TBL (GROUP_ID integer)
ON COMMIT PRESERVE ROWS;
COMMIT;

inert into TBL(GROUP_ID)
SELECT GROUP_ID FROM SP_TREE1(:parent_tree1);

select t1.* 
from table1 t1
       join tbl on t1.group_id=tbl.group_id;
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779056
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GTT создаётся (как и обычная таблица) разово, а используется - по мере надобности.
Данные в таблицы живут или до фиксации транзакции (по умолчанию) или до закрытия соединения (on commit preserve row).
Таким образом, каждое подключение к БД может работать с индивидуальным набором данных в одноимённой временной таблице.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779060
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получается FB физически а не виртуально создает TEMPORARY TABLE

kdvИ пример есть http://www.firebirdsql.org/refdocs/langrefupd21-ddl-table.html
Кстати в примере после отработки create global temporary table стоит commit. Вопрос - тогда как же будет удаляться temporary table вручную самому вызывать drop. Какой замудренный механизм, не ужели нельзя было сделать по принципу "execute block" для хранимой процедуры, который работает как обычный sql-запрос, а не скрипт.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779063
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovТаким образом, каждое подключение к БД может работать с индивидуальным набором данных в одноимённой временной таблице.
Ну тогда особой разницы между моим tmp_table нет, мне казалось, что у FB temporary table виртуальная.
Кстати обычную таблицу, уже имеющуюся в БД, можно ли сконвертировать как-то в temporary table?
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779074
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Ну тогда особой разницы между моим tmp_table нет
Есть:
1) Подумай как ты удаляешь из своих таблиц данные отпавших коннектов.
2) Как ты добьёшься от своих таблиц быть в ОЗУ, не сбрасываясь на диск без крайней
необходимости.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779079
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovfedorov2012Ну тогда особой разницы между моим tmp_table нет
Есть:
1) Подумай как ты удаляешь из своих таблиц данные отпавших коннектов.

С этим все просто - использование tmp_table у меня идет для запросов на select и транзакцию я не commit, поэтому данные никогда физически в tmp_table не сохранятся
fedorov20122) Как ты добьёшься от своих таблиц быть в ОЗУ, не сбрасываясь на диск без крайней
необходимости.

А разве данные будут сбрасываться на диск, если запрос делается в транзакции, которая в итоге не коммититься?
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779093
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012С этим все просто - использование tmp_table у меня идет для запросов на select и транзакцию я не commit, поэтому данные никогда физически в tmp_table не сохранятся
Ну так работай с временной таблицей чего противишся-то?

fedorov2012А разве данные будут сбрасываться на диск, если запрос делается в транзакции, которая в итоге не коммититься?
В общем случае да, в твоем частном случае иногда(а может и всегда) вполне возможно что и нет
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779098
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати обычную таблицу, уже имеющуюся в БД, можно ли сконвертировать как-то в temporary table?
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779100
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

нет
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779101
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,
нет
а можно TEMPORARY TABLE использовать как обычную таблицу т.е. вставлять/удалять туда значение коммитить их?
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779104
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

если GTT будет уровня транзакции то после коммита твои вставленные записи тютю, если уровня соединения, то останутся но ровно до тех пор, пока есть соединение. При дисконнекте он тоже тютю.
...
Рейтинг: 0 / 0
Избежать временных таблиц
    #38779109
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,
если GTT будет уровня транзакции то
т.е. когда я делаю CREATE GLOBAL TEMPORARY TABLE я должен четко сказать какая у меня ON COMMIT {DELETE или PRESERVE} ROWS (delete т.е. после коммита транзакции данные удалятся)?

можно ли использовать индексы и т.п. т.е. правильно ли я понимаю TEMPORARY TABLE от обычной TABLE в FB особо ничем не отличается (только тем, что описано ранее) ?
...
Рейтинг: 0 / 0
25 сообщений из 103, страница 3 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Избежать временных таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]