| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > [VB6] Поисковик с запоминанием запросов |
| Автор: FallFan 21.7.2009, 23:44 |
| Все доброго времени суток! Создается новая таблица "Прошлые Запросы" с тремя полями ("Запрос", "Индексы строк вывода на запрос", "Количество записей на момент запроса"). Далее реализуется алгоритм при совпадении текущего запроса с полем "Запрос" из таблицы "Прошлые Запросы" ("Запрос" = Текущий запрос): 1. Если "Количество записей на момент запроса" < Текущее количество записей, То производим поиск для запроса заново И обновляем информацию для запроса в "Прошлые Запросы". 2. Если "Количество записей на момент запроса" = Текущее количество записей, То производим вывод строк с индексами = "Индексы строк вывода на запрос". 3. Если "Количество записей на момент запроса" > Текущее количество записей, То производим поиск для запроса в записях у которых индекс > "Количество записей на момент запроса" и выводим их И добавляем к уже выведеным записям, записи у которых индекс = "Индексы строк вывода на запрос". И обновляем информацию для запроса в "Прошлые Запросы". Количество записей будет от 1000 до 5000 (в основной базе) и от 100 до 1000 в "Прошлые Запросы", а колличество одновременных пользователей максимум 15-20. Предел задержки вывода результата 1-1.5 мин. (т.е. не критично). Поиск по всем записям основной базы будет редким исключением, т.к. введен поиск в определенных категориях. Вопрос: Будет ли ощутимый прирост в скорости работы программы при такой реализации, если принять, что каждый текущий запрос имеет вероятность в 50% совпасть с "Запрос" из "Прошлые Запросы"? ... 25% ? P.S Если записи в основной базе изменены (что так же будет исключением), то индексы измененных записей будут запоминаться и передаваться отдельно и результат добавляться к результату вышеприведенного алгоритма. |
| Автор: neic 23.7.2009, 10:29 |
| Блин, ты всегда как-то запутано говоришь своими псевдоалгоритмами. Скажи: что входит в программу(какие данные), что в ней должно происходить (пункт не обязателен), что должно выходить. |
| Автор: Naghual 23.7.2009, 11:16 |
| Эффект будет достигнут только при условии, что скорость доступа к промежуточным поисковым таблицам + их обновление будет превышать скорость поиска этих данных. По вашему алгоритму непонятно что будет происходить, если записи изменялись. Не их количество, а именно их содержание. |
| Автор: FallFan 6.8.2009, 16:49 |
| Программа (функция) выполняет простой поиск по БД (Access 2003). Имеются поля "Вопрос", "Ответ", "Комментарий" с типом данных «MEMO», поле "Index", тип данных «числовой» и поле «Flags» с типом данных «текстовый». Поиск происходит по полям "Вопрос", "Ответ", "Комментарий". Заливать многостраничный тест в БД, пока не собираюсь – ограничиваюсь ссылками на файлы, поэтому возможно с «MEMO» перейду на «текстовый». На выходе программа(Функция) выдает номера записей ("Index") при совпадении. В поле "Flags" записываются флаги состояния записи (новая запись, нет ответа, нет комментария и т.д) туда же вставлю флаг измений записи. |