Поиск в БД DAO и ADO

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Поиск в БД DAO и ADO

Сообщение Osteon » 18.01.2013 (Пт) 8:55

Как лучше организовать поиск в БД? Много читал, что Seek лучше, чем Find. В DAO есть и Seek, и Find. В ADO есть только Find, Seek нет. Насколько быстр Find? Или лучше тупым перебором, типа .MoveNext? БД небольшая, до 10 000 записей.
Работаю с БД Access 2007 через ADO.

Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Re: Поиск в БД DAO и ADO

Сообщение Osteon » 24.01.2013 (Чт) 14:20

А в ответ тишина... :(

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Поиск в БД DAO и ADO

Сообщение FireFenix » 24.01.2013 (Чт) 14:58

Лучше всего напрямую SQL запросом
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Поиск в БД DAO и ADO

Сообщение alibek » 25.01.2013 (Пт) 10:29

Seek лучше в том смысле, что это именно поиск с использованием индекса; на неиндексированных полях он недоступен.
В ADO используется Find, если поле не было индексировано по какой-то причине, то движок все-равно будет искать запись (построчно), без выдачи ошибки, что отсутствует индекс. Плюс это или минус — решать разработчику. Но Find в любом случае быстрее, чем самодельный перебор строк через MoveNext. И кстати, при открытии источника данных (таблицы) как TableDirect (этот режим доступен только для Jet-провайдера при открытии таблицы) можно использовать Seek-поиск по индексу.
Однако DAO это технология устаревшая, она нормально работает только на mdb-файлах с провайдером Jet. Если планируется смена СУБД или кроссплатформенность, то DAO не подойдет.
Сама по себе задача "искать" не имеет смысла. Искать можно что-то и где-то. Если нужно искать документы, то лучше использовать Find. Если нужно искать в справочниках (для расшифровки статусов, состояний и т.п.), то возможно есть смысл использовать отвязанный рекордсет с данными из справочников.
Lasciate ogni speranza, voi ch'entrate.

Osteon
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 17.01.2013 (Чт) 5:53

Re: Поиск в БД DAO и ADO

Сообщение Osteon » 04.02.2013 (Пн) 6:20

СПАСИБО!!!


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 119

    TopList