Главная страница
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.028 c
3-1100503294
denis24
2004-11-15 10:21
2004.12.12
Tdbimage


3-1100253492
Сергей Бастрыгин
2004-11-12 12:58
2004.12.12
Чтение неподтвержденных данных


14-1100832492
Думкин
2004-11-19 05:48
2004.12.12
С днем рождения! 19 ноября


4-1098854639
Shura
2004-10-27 09:23
2004.12.12
Привилегии WindowsXP и MailSlot


1-1101452426
sergg
2004-11-26 10:00
2004.12.12
Надпись на BitBtn в две строки