![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте все. Есть задача, в соответствии с которой табличку .dbf надо отфильтровать по полю с типом date. Табличка клипперовская, файл индекса имеет расширение .ntx. Для примера я создавал индекс в ручную по нужному мне полю и делал по нему фильтр в Apollo Table, выборка данных проходила шустро, несмотря на то, что в таблице более миллиона записей.
Проблема в том, что индекс, который мне на самом деле нужно использовать создаётся автоматически другой программой при добавлении записей (вообще говоря, в конце дня, но это не важно) и строится он не совсем так, как делал его я, а именно, в качестве индексного выражения используется такая вот бяка: Код:
DTOS(sysdate) Т.е., на сколько я понимаю, дата преобразовывается в строку в формате yyyymmdd, без разделителей. В результате мой код с фильтром, который выглядит вот так: Код:
... ApolloTable1->filtered = false; ApolloTable1->filter = "sysdate = CTOD('01.01.2013')"; //Дата для примера, в программе она формируется динамически ApollTable1->filter = true; ApolloTable1->open(); |
#2
|
||||
|
||||
![]() Попробуй SQL запросы.
Аналогичная строка твоему фильтру Код:
query1.sql.text:='SELECT * FROM apolltable1 WHERE sysdate = CTOD('01.01.2013')'; query1.open; Я за здоровый экстрим! Спасибо за "спасибо") |
#3
|
|||
|
|||
![]() Цитата:
|
#4
|
|||
|
|||
![]() Цитата:
Код:
select * from SomeTable where SomeDateField = #01.01.2013# Последний раз редактировалось childeroland, 20.05.2013 в 12:44. |
#5
|
||||
|
||||
![]() ну, грубо говоря, table тоже шлет SELECT * FROM че-то
а потом мы с этим контейнером работаем может быть драйвера? p/s/ глянь ЛС заинтересовало в своей базе)) взял adotable + удаленный mysql + лог на 100к записей + таймер. время открытия - около 1мин 30сек все то же самое, но через adoquery (select * from log). время открытия - около 1мин 10сек Я за здоровый экстрим! Спасибо за "спасибо") Последний раз редактировалось Mrak, 20.05.2013 в 14:50. |
Этот пользователь сказал Спасибо Mrak за это полезное сообщение: | ||
childeroland (11.06.2013)
|
#6
|
|||
|
|||
![]() Цитата:
Видимо как раз дело в том, что у тебя mysql обрабатывает запросы, это логично, что sql в такой связке будет быстрее, но у меня, я уже вроде говорил, таблица лежит локально, недалеко от исполняемого файла, никаких субд в принципе нет, тупо обращаюсь к таблице .dbf и вот через query капец как тормозит. p.s. в принципе, я уже реализовал код через ApolloTable, работает шустро, хоть, может, и через задницу, но всё-таки разобраться в вопросе не мешало бы, так что жду ещё предложений |