Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Использование индексов   Найти похожие ветки 

 
Dionnis   (2004-11-15 18:12) [0]

Здравствуйте уважаемые мастера! Я столкнулся с такой проблемой:
Использую ADO и провайдер Microsoft Visual FoxPro OLE DB Provider для работы с dbf - файлами. Мне нужно из файла с именем
personal.dbf, который имеет индекс ipersonal.cdx, выбрать определённую запись, для этого использую запрос в CommandText объекта класса TADODataSet: "SELECT * FROM personal.dbf WHERE NOM = 123". В таблице около 100 тыс. записей. и запрос выполняется очень медленно (около минуты). Так как имя dbf таблицы (personal) отличается от имени индекса (ipersonal), я так понимаю что он и не используется. Как можно заставить использовать этот индекс? Может быть команда есть какаято, или ссылку кто знает полезную?
                                               Заранее спасибо!


 
sniknik ©   (2004-11-15 20:30) [1]

сомневаюсь что чтото получится... даже в фоксе sql ные команды не работают с таким индексом (раньше так было во всяком случае)
надо открывать таблицу в фоксе с использованием такого индекса
USE Table INDEX iIndex
чтото в таком роде, т.е. это все команды фокса, а с sql даже втроенным не работает, а у движка odbc шного только sql есть без этих фоксовых команд.

возможно если базу использовать, *.dbc, вот в ней соответствия можно прописать... (возможно! только, точно не знаю)

а зачем сложности, нельзя переименовать? хотя бы на время работы.


 
Dionnis   (2004-11-16 11:54) [2]

При использовании команды USE Table INDEX iIndex ещё дольше поиск идёт! 8-(


 
sniknik ©   (2004-11-16 12:28) [3]

в фоксе? не верю,
сделай
USE Table INDEX iIndex
BROWSE FOR NOM = 123
должно быть быстро. а то что ты после фоксовой команды выполнил команду sql ничего не значит. (кроме паралельного открытия таблицы в области фокса, ничего не добился)


 
Dionnis   (2004-11-16 14:14) [4]

Не, не в Фоксе, я из Делфей используя провайдер FoxPro OLE DB Provider работаю с dbf таблицами. Этот провайдер "понимает" некоторые команды Фокса. Вот я ни как не могу подключить индекс,
который по умоляанию не используется из-за разницы имён. С Фоксом я никогда не работал, поэтому не знаю какая команда подключает индекс. Щас вот роюсь в книжке по Фоксу ...


 
sniknik ©   (2004-11-16 14:27) [5]

использовать индекс с открытой в области таблицей уже сказал, если таблица уже открыта то можно подключить  
SET INDEX OF iIndex.cdx (если не путаю, подзабыл уже)

но (!!!)

повторяю, это тебе ничего не даст, т.к. это не для тех команд которые ты можеш использовать "используя провайдер FoxPro OLE DB Provider" с командой SELECT ... FROM ...
это ничего не даст даже в фоксе с этой командой, чего тогда от других ждать?



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
6-1096974106
Algol
2004-10-05 15:01
2004.12.12
Даты изменения файлов по FTP


14-1101310747
Empleado
2004-11-24 18:39
2004.12.12
may be useful


1-1101724775
Chery
2004-11-29 13:39
2004.12.12
Преобразование дат: гггг-мм-дд и дд-мм-гггг.


1-1101208136
ИМХО
2004-11-23 14:08
2004.12.12
Canvas does not allow drawing


1-1101466977
Manfred8
2004-11-26 14:02
2004.12.12
Запрет вставки из буфера в Edit