Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление из DBF [D7, dBase, FoxPro]


stone ©   (2006-02-26 16:13:00) 

Работаю с DBF (dBase IV) через BDE. Периодически необходимо удалять данные. Записей в файле порядка 10 млн. Удалить, в зависимости от условия (по двум полям), нужно около 500 тыс. Пока удаляю простым запросом (delete from ... where ...). Скорость удаления информации не достаточно высокая. Может у кого есть идеи как ускорить удаление инфомации?


Anatoly Podgoretsky   (2006-02-26 19:41:00) [1]

Прошу прощения, отвечал на совсем другую тему.
По этой теме не могу сказать, не использую, поскольку он ориентирован на ФоксПро, а меня интересует только dBase IV
Проблему решил переходом на Absolute Database Personal Edition.
Всю задачу на нем реализовал за два часа, совместимость по форматам и многопользовательскя работа мне не требовались. Из проблем некачественная информация об рантайм ошибка с вылетом по недопустимой операции, но это мелкие недостатки.


Anatoly Podgoretsky   (2006-02-26 19:37:00) [2]

Vlad ©   (26.02.06 19:22) [15]
Вроде нормально, он работает с физической структурой файла.
Кстати и здесь можно также или второй вариант - сделать шаблон в DBD (этот правильно работает, поскольку работает напрямую с БДЕ).


Vlad   (2006-02-26 19:22:00) [3]


> Anatoly Podgoretsky ©   (26.02.06 19:17) [13]

А Halcyon как себя ведет?


Anatoly Podgoretsky   (2006-02-26 19:21:00) [4]

Ошибка выглядела так, имеем пустую таблицу, созданую с DBD
добавляем в цикле 10000 записей, смотри на RecordCount - видим примерно 43000.
Ладно идем в DBD и производим упаковку, снова смотрим на RecordCount - видим примерно 11000. Дальше не лечится. Моему приложению требовался правильный RecordCount

По последней версии, не работают индексы, ладно бы просто не сортировало, так в гриде показывается верную информацию по полю даты и произвольную из другиъ полей, посвторяет последнею, на которой стояло. А это уже крах.

До этого были и другие ошибки, немного они документированы в history.txt - а это единственная документация от авторов :-)


Anatoly Podgoretsky   (2006-02-26 19:17:00) [5]

А я их увидел на 10000, поскольку искал.
А на последней версии увидел ужас с индексами по полю типа D


Vlad   (2006-02-26 19:14:00) [6]


> Anatoly Podgoretsky ©   (26.02.06 18:57) [11]

Интересно, буду знать.
Не помню, правда, какую версию я использовал, но записей было около 2-3 млн. Проблем не было.


Anatoly Podgoretsky   (2006-02-26 18:57:00) [7]

Vlad ©   (26.02.06 16:57) [9]
Чтобы потерять всю базу?
В последней версии опять обнаружились серьезные глюки с индексами.
А свыше 5000 записей таблица просто портится и ремонту не подлежит.
TDBf подходит только для очень простых, не критичных проектов.
Удивляют они меня на протяжении многих лет.


stone   (2006-02-26 17:09:00) [8]


> Johnmen ©   (26.02.06 16:55) [7]
> Думается, что индексы будут только тормозить.

Сомневаюсь, но попробую без индексов...


Vlad   (2006-02-26 16:57:00) [9]


> stone ©   (26.02.06 16:54) [6]


А не пробовал TDBf ?
Меня в свое время он приятно удивил по скорости, правда речь шла об insert


Sergey13   (2006-02-26 16:56:00) [10]

2[7] Johnmen ©   (26.02.06 16:55)
Я тоже к этому вел. 8-)


Johnmen   (2006-02-26 16:55:00) [11]

Думается, что индексы будут только тормозить.


stone   (2006-02-26 16:54:00) [12]


> Sergey13 ©   (26.02.06 16:51) [5]
> А в цикле индексы подключены?

Обижаешь :))
Все стандартные приемы я пробовал. Хотелось узнать, может есть какие хитрости, недокументированные возможности и т.д.


Sergey13   (2006-02-26 16:51:00) [13]

А в цикле индексы подключены?


stone   (2006-02-26 16:49:00) [14]


> А в where сильно наворочено? В цикле удалять не пробовал?

Довольно долго, больше часа. В цикле еще дольше.


Sergey13   (2006-02-26 16:42:00) [15]

2 [2] stone ©   (26.02.06 16:34)
> Ты знаешь ...
Нет. Это я с горяча. 8-)
А все таки - сколько времени удаляет? Ради интереса.
А в where сильно наворочено? В цикле удалять не пробовал?


stone   (2006-02-26 16:34:00) [16]


> Sergey13 ©   (26.02.06 16:27) [1]
> Индексы есть?

Ты знаешь как в LocalSQL принудительно указать использование какого-либо индекса?


Sergey13   (2006-02-26 16:27:00) [17]

>Скорость удаления информации не достаточно высокая.
А скока точно? Индексы есть?


Наверх

Титульная страница Поиск, карта сайта Написать письмо