Вниз
Скачать: CL | DM;

Delete + Update   Найти похожие ветки 

← →
Nick87   (2008-09-25 12:22) [0]

Поделитесь советами. Имеется таблица содержащая порядка 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-25 12:28) [1]

после массового делита полезно сделать уборку мусора (версий строк)


← →
Правильный$Вася   (2008-09-25 12:41) [2]


> Поросенок Винни-Пух ©   (25.09.08 12:28) [1]

только в случае разовой операции удаления
в программе же не стоит этого делать

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


← →
Sergey13 ©   (2008-09-25 13:06) [3]

> [0] Nick87   (25.09.08 12:22)
> Нормальным ли является общее время выполнения этих запросов около 2 минут.

Многовато что-то, ИМХО. А какой из двух тормозит больше?


← →
Nick87   (2008-09-25 13:12) [4]


> > [0] Nick87   (25.09.08 12:22)> Нормальным ли является
> общее время выполнения этих запросов около 2 минут.Многовато
> что-то, ИМХО. А какой из двух тормозит больше?

2 (Update)


← →
Правильный$Вася   (2008-09-25 13:13) [5]


> СУБД FIB

что это?


← →
Ega23 ©   (2008-09-25 13:17) [6]


>
> > СУБД FIB
>
> что это?


Фускин InterBase ?


← →
Nick87   (2008-09-25 13:22) [7]

FireBird 2.0


← →
Sergey13 ©   (2008-09-25 13:26) [8]

> [4] Nick87   (25.09.08 13:12)

Попробуй flags NOT IN (1, -1) заменить на flags<>1 and flags<>-1.


← →
Sergey13 ©   (2008-09-25 13:27) [9]

> [4] Nick87   (25.09.08 13:12)

А вообще недурно бы структуру таблицы с индексами опубликовать. И план посмотреть.


← →
Правильный$Вася   (2008-09-25 13:27) [10]


> под условия запросов подпадает порядка 8000 записей

так под удаление или под изменение?
или в сумме? - тогда каждый вотдельности охарактеризуй
и план смотри, может, где-то индексировать надо


← →
Правильный$Вася   (2008-09-25 13:28) [11]


> Попробуй flags NOT IN (1, -1) заменить на flags<>1 and flags<>-1.

FB умеет скобки раскрывать
а про план я давно сказал


← →
ЮЮ ©   (2008-09-26 02:55) [12]

А как быстро рвботвют ъти же запросы, если поставить SELECT вместо DELETE и UPDATE.

DELETE тормозит, нсли на эту таблицу есть CONSTRAINT FOREIGN KEY из другой таблицы, а индекса по тому полю нет. Тогда FULL SCAN второй таблицы перед удалением каждой записи обеспечен.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.011 c
1-1202119964
МистерТ
2008-02-04 13:12
2008.11.02
Как в Delphi10Lite переключить ключ компиляции ?


3-1208522678
keymaster
2008-04-18 16:44
2008.11.02
PL/SQL и кирилица


2-1222075683
Nameziz
2008-09-22 13:28
2008.11.02
Обработка исключений


1-1201073162
Unknown user
2008-01-23 10:26
2008.11.02
Control has not parent window


15-1221108426
Cyrax
2008-09-11 08:47
2008.11.02
Терминатор 2 3D - Битва сквозь время: фрагмент с T1000000




   Наверх