У меня есть таблица в Access с 1 полем с именем HostName, это текстовое поле, максимум 100 символов. Я использую его для хранения имен хостов DNS. Поле настроено как первичный ключ. Если я выполняю следующий запрос, он возвращает ожидаемые результаты, но занимает около 8 секунд для таблицы с 1 миллионом записей:
ВЫБРАТЬ ТОП 1 HostsRev.HostName
ОТ HostsRev
ГДЕ (((HostsRev.HostName)> = "тест"))
ЗАКАЗАТЬ HostsRev.HostName;
Если я удаляю часть "ORDER BY", она возвращается менее чем за 1 секунду, но не всегда возвращает то, что я ожидаю, - не первая запись, которая> = "to".
Я делаю запрос через ADO из приложения C ++, но я также проверил в Access, создав запрос и получив те же результаты.
Мне нужно быстро найти первую запись, если она есть, которая начинается с заданной строки. Я также пытался использовать LIKE-запрос, но тот же результат. Мне нужно это сделать, потому что, если я выполняю поиск на images.google.com, мне нужно знать, содержит ли список google.com, но не images.google.com (я действительно храню имена хостов в обратном порядке, чтобы это работало правильно и поверните строки перед поиском).