Форум: "Начинающим";
Текущий архив: 2013.06.09;
Скачать: [xml.tar.bz2];
Внизнужен ли try..exept Найти похожие ветки
← →
DVM © (2012-11-05 22:05) [40]
> sniknik © (05.11.12 21:55) [39]
> речь не разовом запросе, а о данном подходе при массовых
> вставках например.
Вот я как раз и делал вставки. Сотни тысяч записей. И замерял время. Разница была, но очень небольшая, считанные секунды, при общем времени минуты. Сервер Firebird (2.5 кажется). Компоненты доступа DBX. Правда данные были весьма объемные, может это сыграло роль. Собственно решил замерять после какой то темы на форуме с твоим участием, где тот же вопрос обсуждался про параметры.
← →
Anatoly Podgoretsky © (2012-11-05 22:42) [41]> kilkennycat (05.11.2012 21:50:38) [38]
Это значит, что не надо замусоривать кеш. Делать все с параметрами и всего
делов.
← →
DVM © (2012-11-05 22:45) [42]
> Anatoly Podgoretsky © (05.11.12 22:42) [41]
> Делать все с параметрами и всего
> делов.
>
>
Догмы навязываете-с.
← →
sniknik © (2012-11-05 23:00) [43]> Догмы навязываете-с.
+1
а ну как, условия нет, параметр придумать?
> Сервер Firebird (2.5 кажется). Компоненты доступа DBX.
они также как ADO делают при возможности (коннект + не определенность) обращение на сервер определяя тип и валидность параметров?
> с твоим участием, где тот же вопрос обсуждался про параметры.
и там, если помнишь это дало очень большой прирост скорости...
нельзя использовать на всем один подход.
← →
AlphaHuman (2012-11-06 10:47) [44]
> Anatoly Podgoretsky © (05.11.12 22:42) [41]
> > kilkennycat (05.11.2012 21:50:38) [38]
>
> Это значит, что не надо замусоривать кеш. Делать все с параметрами
> и всего
> делов.
А если нужно сделать массовый UPDATE, наример:
UPDATE table SET item_queue =
CASE item_id
WHEN item_id = 1 THEN 8
WHEN item_id = 2 THEN 16
WHEN item_id = 3 THEN 24
WHEN item_id = 4 THEN 32
WHEN item_id = 5 THEN 40
...
WHEN item_id = I THEN J
END
WHERE item_id IN (1, 2, 3, 4, 5, ..., I)
Нужно создать кучу параметров?
← →
Inovet © (2012-11-06 10:51) [45]> [44] AlphaHuman (06.11.12 10:47)
> А если нужно сделать массовый UPDATE
Массовый апдейт или исключение для испраления косяков, или что-то не так с архитектурой.
← →
AlphaHuman (2012-11-06 11:05) [46]это чтобы избежать множества UPDATE в цикле. Я получаю идентификаторы категорий - item_id. Для каждой категории нужно задать значение поля item_queue (для каждого последующего его значение равно + 8).
← →
Ega23 © (2012-11-06 11:11) [47]
> А если нужно сделать массовый UPDATE, наример:
>
> UPDATE table SET item_queue =
> CASE item_id
> WHEN item_id = 1 THEN 8
> WHEN item_id = 2 THEN 16
> WHEN item_id = 3 THEN 24
> WHEN item_id = 4 THEN 32
> WHEN item_id = 5 THEN 40
> ...
> WHEN item_id = I THEN J
> END
> WHERE item_id IN (1, 2, 3, 4, 5, ..., I)
>
>
> Нужно создать кучу параметров?
Одной строчкой всё делается, вообще без параметров.UPDATE table SET item_queue = item_id * 8
← →
AlphaHuman (2012-11-06 11:18) [48]
> Одной строчкой всё делается, вообще без параметров.
> UPDATE table SET item_queue = item_id * 8
1, 2, 3, 4, 5 - плохой пример привел, реально там может быть: 713, 24, 119, 1028, 2. В итоге должно получиться:
item_id item_queue
713 8
24 16
119 24
1028 32
2 40
← →
MsGuns © (2012-11-06 13:18) [49]ИМХО, для подобного ХП надо
← →
Очень Злой (2012-11-08 15:32) [50]Не знаю что для подобного лучше, но на практике, мне когда встречалась такая ситуация, обычно оказывалось что нужные данные есть в других таблицах, из которых их можно получить или напрямую или создать запрос (или представление).., чтобы оно возвращало нечто типа:
item_id item_queue
713 8
24 16
119 24
1028 32
2 40
а тогда уже :
UPDATE table a SET a.item_queue = (select item_queue from dict_table_or_view where item_id=a.item.id)
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.06.09;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.027 c