![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delete + Update
Nick87 © (2008-09-25 12:22:00)Поделитесь советами. Имеется таблица содержащая порядка 10 000 записей. необходимо последовательно выполнить 2 запроса (Delete и Update). Таки образом под условия запросов подпадает порядка 8000 записей. Нормальным ли является общее время выполнения этих запросов около 2 минут.
Вот вообщемто сам код. (СУБД FIB)
Result := -1;
if ConnectionStatus = csConnected then
with cmp_Query_, cmp_DataBase do begin
try
StartTransaction;
try
SQL.Text := Format('DELETE FROM Types WHERE (%s = %s) AND (types_code = -1);UPDATE Types SET flags = 1 WHERE (%s = %s) AND (flags NOT IN (1, -1))', [FSelFieldName, Val, FselFieldName, Val];
ExecSQL;
Commit;
Result := RowsAffected;
except
Rollback;
raise;
end;
except
on E: Exception do
LogError(E.Message);
end;
end
else
LogError(const_msg_ErrorConnection);
ЮЮ (2008-09-26 02:55:00) [1]А как быстро рвботвют ъти же запросы, если поставить SELECT вместо DELETE и UPDATE.
DELETE тормозит, нсли на эту таблицу есть CONSTRAINT FOREIGN KEY из другой таблицы, а индекса по тому полю нет. Тогда FULL SCAN второй таблицы перед удалением каждой записи обеспечен.
Правильный$Вася (2008-09-25 13:28:00) [2]
> Попробуй flags NOT IN (1, -1) заменить на flags<>1 and flags<>-1.
FB умеет скобки раскрывать
а про план я давно сказал
Sergey13 (2008-09-25 13:27:00) [3]> [4] Nick87 (25.09.08 13:12)
А вообще недурно бы структуру таблицы с индексами опубликовать. И план посмотреть.
Правильный$Вася (2008-09-25 13:27:00) [4]
> под условия запросов подпадает порядка 8000 записей
так под удаление или под изменение?
или в сумме? - тогда каждый вотдельности охарактеризуй
и план смотри, может, где-то индексировать надо
Sergey13 (2008-09-25 13:26:00) [5]> [4] Nick87 (25.09.08 13:12)
Попробуй flags NOT IN (1, -1) заменить на flags<>1 and flags<>-1.
Nick87 (2008-09-25 13:22:00) [6]FireBird 2.0
Ega23 (2008-09-25 13:17:00) [7]
>
> > СУБД FIB
>
> что это?
Фускин InterBase ?
Правильный$Вася (2008-09-25 13:13:00) [8]
> СУБД FIB
что это?
Nick87 (2008-09-25 13:12:00) [9]
> > [0] Nick87 (25.09.08 12:22)> Нормальным ли является
> общее время выполнения этих запросов около 2 минут.Многовато
> что-то, ИМХО. А какой из двух тормозит больше?
2 (Update)
Sergey13 (2008-09-25 13:06:00) [10]> [0] Nick87 (25.09.08 12:22)
> Нормальным ли является общее время выполнения этих запросов около 2 минут.
Многовато что-то, ИМХО. А какой из двух тормозит больше?
Правильный$Вася (2008-09-25 12:41:00) [11]
> Поросенок Винни-Пух © (25.09.08 12:28) [1]
только в случае разовой операции удаления
в программе же не стоит этого делать
лучше обратить внимание на план выполнения каждого запроса и улучшить его, если есть возможность
Поросенок Винни-Пух (2008-09-25 12:28:00) [12]после массового делита полезно сделать уборку мусора (версий строк)