Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизUpdate - ограничение на кол-во записей? Найти похожие ветки
← →
Grac (2003-07-17 01:07) [0]Запрос на обновление разряда рабочего из справочника профессий:
UPDATE "Test.dbf" a SET
a.Razr=(SELECT max(b.Raz) FROM "Profess2.dbf" b
WHERE b.TabN=a.TabN AND b.Profess=a.Profess)
На тестовом примере для 1000 записей все работает, но на реальных данных сегодня для 16000 записей выдала ошибку о нехватке памяти.
Я только начинающий в Дельфи. Это мой первый серьезный проект.
Как можно обойти ситуацию?
Мой запрос - неправильный? Лучше использовать поиск Lookup?
← →
ЮЮ (2003-07-17 03:11) [1]>Мой запрос - неправильный?
Может у тебя структура неправильная? Если разряд указан в таблице Profess2, а a.Profess - ссылка на нужную запись в Profess2, то зачем ещё поле Razr и в таблице Test?
← →
Grac (2003-07-17 08:34) [2]Структура правильная. Это дополнительное поле нужно для вычисления доплаты за межразрядную разницу, если рабочий работает не по основной профессии.
← →
Sandman25 (2003-07-17 11:06) [3]А сколько памяти на машине? Может, действительно нужно добавить?
← →
VAleksey (2003-07-17 11:20) [4]Делай порционное обновление по тысяче записей
Например
1) Select Max(b.TabN) from "Profess2.dbf" b
2) идешь циклом с приращением 1000
назначаешь параметры :aTabnum = 0 , :bTabnum := :aTabnum + 1000 и т.д.
3) Выполняешь обновление
UPDATE "Test.dbf" a SET
a.Razr=(SELECT max(b.Raz) FROM "Profess2.dbf" b
WHERE b.TabN=a.TabN AND b.Profess=a.Profess and
b.TabN >= :aTabnum and b.TabN <= :bTabnum)
С помощью этого способа ты можещь даже показать индикатор выполнения запроса на обновлени.
ЗЫ
Надеюсь ты уже научился работать с параметрами? Т.к. то что я написал выше - это только общие рассуждения на тему " Как можно обойти ситуацию?"
← →
ЮЮ (2003-07-17 11:51) [5]При правильных структурах не выполняют такие Updat-ы на всю таблюцу и не хранят данные, клторые могут быть вычислены. На худой конец, пишут хорошего клиента, чтобы это значение записывалось в базу после манипуляций с одним работником, а не временами сразу по всем
← →
Grac (2003-07-17 12:29) [6]Памяти 512. С параметрами работать умею. Всем спасибо :)
Думал, что кто-то сталкивался с такой проблемой.
> ЮЮ
Увы. Наряды вводятся каждую декаду, завод большой и вычисления сложные. Легче добавить дополнительные поля. Забить туда данные и потом выполнять сложные расчеты, отчеты и загрузку зарплаты в основную базу (Adabas).
Пока еще мне не хватает опыта.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c