ЧАстые Вопросы и Ответы
Модераторы: kdv, CyberMax
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 19 дек 2007, 13:10
Mironico писал(а):
На тот момент в таблице есть абсолютно все товары
причем есть же проверка where tovar_kod=такойто
абсолютного ничего не бывает, товары как-бы новые появляются
тебе не проверка нужна, а вставка того товара, которого у тебя нет в справочнике товаров (а вот поставщик взял и поставил тебе новую модель) или сигнал об отсутствующем товаре
ЗЫ
а вот этот вариант к примеру на мой взгляд гораздо хуже ХП
Код: Выделить всё
update zakaz z
set z.kolvo=
(SELECT SUM( P.KOLVO ) SUM_OF_KOLVO
FROM TOVARS t
JOIN PARTIONS p ON (P.ID_TOV = T.ID_TOVAR)
where T.TOVAR_KOD=z.tovar_kod
GROUP BY T.TOVAR_KOD)
-
Mironico
- Сообщения: 81
- Зарегистрирован: 17 янв 2007, 12:23
Сообщение
Mironico » 19 дек 2007, 14:15
Мда, долго так.
Даже дольше чем с локейтом.
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 19 дек 2007, 14:40
Mironico писал(а):Мда, долго так.
Даже дольше чем с локейтом.
подобная штука тебе тоже не нравится?
Код: Выделить всё
CREATE PROCEDURE NEW_PROCEDURE
RETURNS (
vtovar_kod integer,
vsum integer)
AS
begin
/* Procedure Text */
for SELECT T.TOVAR_KOD, SUM( P.KOLVO )
FROM TOVARS t
JOIN PARTIONS p ON (P.ID_TOV = T.ID_TOVAR)
GROUP BY T.TOVAR_KOD
into:vtovar_kod,:vsum
do
begin
update zakaz z
set z.kolvo=:vsum
where z.tovar_kod=:vtovar_kod;
end
exit;
end
ЗЫ
забыл where z.tovar_kod=:vtovar_kod;
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 19 дек 2007, 16:34
Mironico писал(а):тоже долго шо жуть
Включаю ТЛ.
Код: Выделить всё
CREATE INDEX PARTIONS_IDX1 ON PARTIONS (ID_TOVAR);
CREATE INDEX ZAKAZ_IDX1 ON ZAKAZ (TOVAR_KOD);
Если структура на самом деле сложнее - пиши, почитаем.
-
Mironico
- Сообщения: 81
- Зарегистрирован: 17 янв 2007, 12:23
Сообщение
Mironico » 19 дек 2007, 16:47
Йомае! Супер!
На товарах и партиях были индексы а на заказе не было.
Теперь за 4 сек. перечитывается.
БОЛЬШОЕ СПАСИБО!!!!!!!
С меня много пива.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 19 дек 2007, 17:07
На товарах и партиях были индексы а на заказе не было.
у тебя что, таблицы без FK?
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 20 дек 2007, 08:26
Mironico писал(а):Не все, забывал про них
какой вариант-то выбрал?
-
ForMal
- Сообщения: 1
- Зарегистрирован: 07 дек 2009, 16:30
Сообщение
ForMal » 07 дек 2009, 17:48
Этот текстовый файл который построчно локэйтом обрабатывается, он является внешней таблицей FireBird-а? Если да, то тогда сначала попробуй этот файл загнать во внутреннюю таблицу, а уже внутреннюю обрабатывать ХП, но не в коем случае не локэйтом!!! Он ушел в прошлое вместе с BDE! Лучше чем курсор на нужную запись ставить, лучше Select-ом отбирать данные в переменные, а затем уже данные из этих переменных обрабатывать!
Нужно всю обработку перенести на сервер.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 07 дек 2009, 18:38
забавно читать ответы на топики двухлетней давности. ForMal, смотрите на даты, "некрофилия" тут не поощряется.
Как и безапелляционные утверждения типа "Нужно всю обработку перенести на сервер.".