|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Dmitri Popov 2:5020/400 04 Apr 2001 17:13:08 To : All Subject : Re: Update нескольких запи сей в Interbase --------------------------------------------------------------------------------
On Wed, 4 Apr 2001, Stepan Pasternak wrote:
> Hello All!
>
> Есть проблема одна. надо как можно быстрее сделать апдейт нескольких (10-2000)
> записей в табличке вида:
> ID - integer
> Value1 - integer
> Value2 - integer
>
> записей 2000, тоесть болванка. Количество записей не меняется.
>
> Hадо раз в минуту апдейтить во всех (или нескольких 10-2000) записях значение
> Value1, Value2.
>
> Вариант типа
> Update my-table
> set Value1=12, Value2=23 where id=1
> и так по каждой записи работает слишком долго.
>
> надо что-то типа
> Update my-table
> set Value1=12 Value2=23 where id=1
> ....
> set Value1=33 Value2=44 where id=2000
> но одним запросом.
> Советовали мне пробовать через Start Transaction, но как это сделать - не знаю
> :-(
> Help!
>
> Stepan
Ежели записей в пределах нескольких сотен, то можно
update ... where id in (1, ..., 2000);
Если больше, то всё равно может быть полезно побить на куски
и обновлять таким способом. По крайней мере сэкономишь трафик по сравнению
с одиночными обновлениями.
Кстати, откуда берётся список id? Если другим запросом, то возможно
update ... where id in (select ....);
Правда у IB есть особенности в понимании таких подзапросов -
http://ib.krista.ru/subq-opt.html
Hу или если не сложно положить список id во временную таблицу, то потом
можно обновляться из неё запросом примерно такого же вида. В некоторых
наиболее клинических случаях эта таблица может быть external table. Только
тогда по соображениям эффективности лучше for select from список_id do
update.
Вот такие примерно мысли.
--
Дмитрий Попов, mailto:popov@krista.ru
--- ifmail v.2.15dev5
* Origin: Krista NPO (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/1058464a9d328.html, оценка из 5, голосов 10
|