Форум » [x]Harbour » Проблема с условной индексацией 2 » Ответить

Проблема с условной индексацией 2

Andrey: Возвращаюсь к этой теме повторно ! Раньше было получено рабочее решение: условной индексации по БД из 60 000 записей, имеющей 263 поля и занимающей 55 Мб решается так: nKolRecords := LASTREC() cIndexTo := "PADL(ALLTRIM(FIELD->CNumKvar),5)" cFilterTo := "NN==2010490.AND.!DELETED()" ---------------------------------------------------------------------------------- INDEX ON &cIndexTo TAG "ONE" TO ("temp.cdx") ; EVAL SAY_PROC() ; EVERY nKolRecords / 10 ; WHILE &cFilterTo ADDITIVE // замена на FOR &cFilterTo ADDITIVE увеличивает построение индекса на 6 сек. ORDSETFOCUS( "ONE" ) DBSETORDER(INDEXORD()) DBGOTOP() где SAY_PROC() - функция рисования бегунка, возвращает всегда .T. Сейчас потребовалась выборка по дате: cIndexTo := "DTOS(FIELD->DATEPRIX)+STR(FIELD->TIMEPRIX)" cFilterTo := "DATEVvod=CTOD("26.02.11).AND.KOPERAT=101.AND.!DELETED()" --------------------------------------------------------------------------------- INDEX ON &cIndexTo TAG "ONE" TO ("temp.cdx") ; EVAL SAY_PROC() ; EVERY nKolRecords / 10 ; WHILE &cFilterTo ADDITIVE ORDSETFOCUS( "ONE" ) DBSETORDER(INDEXORD()) DBGOTOP() Индекс строится мгновенно, но функция FOUND() всегда возвращает .F. - хотя если поставить заместо WHILE ---> FOR то нормально работает, правильно возвращает. но FOR - строит медленнее... чем WHILE ..... В чем дело, тип ДАТА или ЧИСЛА неправильно в фильтре ??? или еще чего ??? подскажите пожалуйста.

Ответов - 32, стр: 1 2 All



полная версия страницы