![]() |
|
|
![]()
|
|
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Вот раскажите как в lingvo так быстро слова фильтруются??? там же дофига слов... я вот базу сделал из 300000 слов так задержка заметная (около 2-3 сек). (База на Файрберде). Делал фильтрами на датасети долго делел процедурои в запросе но это тож долго так как после присваеванич параметра приходится переоткрывать датасет. Порекамендуите что нибудь.
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 3 Всего: 133 |
Хотелось бы увидеть код твоих "фильтров". Мне приходилось работать с БД в пол миллиона записей, и обычный SELECT делал выборку за секунду (правда база была Oracle, но, думаю, это не существенно). Показывай чо ты там делаешь, может дело не в базе, а в алгоритме
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| X-Vlad |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 570 Регистрация: 10.4.2002 Где: Украина, Львов Репутация: 3 Всего: 5 |
многое зависит от архитектуры базы.. ну и смотря что ты вибирал )))) например
будет делать за секунду а насчет лингво я недумаю что он это все читает с файла или базы.. он загружает в память а потом уже там ищет. (ИМХО) |
||||
|
|||||
| WaReZMEN |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Пробовал делать так
Сами понимаете на Change Edit1 выполняется этот кусок кода. Ща покажу select он кстате процедура в Фаирберде...
Код процедуры
Код процедуры GET_RUSSIAN_WORD(:IN_WORD) (процедура get_english_word(:IN_WORD) точно такаяже как и GET_RUSSIAN_WORD(:IN_WORD))
Все это работает довольнотоки долго... хочется быстрее ... пробовал делать так При старте проги гружу все слова сразу потом делаю FetchAll и просто фильтрую с помощью датасета вот так:
|
||||||||||
|
|||||||||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Ну что поможет ктонибудь?
|
|||
|
||||
| Esperito |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: 2 Всего: 3 |
Вообще-то при вводе букв нужного слова существует некоторая задержка перед переходом. То есть, если юзер клацает по клавиатуре быстрее этой задержки, то переход не производится. А у тебя получается, что переход осуществляется после ввода каждой буквы, так ведь?
|
|||
|
||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
Esperito, обсалютно верно! Но ведь в томже лингво он осуществляется маментально даже не самирая на сикунду.
|
|||
|
||||
| Deniz |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
легко, только начнем с указания правильных данных.
Как это понимать?
Лучше фильтровать не в программе по OnFilterRecord, а SQL запросом. Вся проблема в том, что не используются индексы. Предложения по изменению: 1. В таблице spr_russian_word(и всех похожих) добавить поле WordUPPER и хранить там upper(Word). 2. В таблице spr_russian_word(и всех похожих) добавить индекс по WordUPPER. 3. Заменить Like на Starting with
Делай, далее посмотрим на сколько увеличилось быстродействие. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||||
|
|||||||
| WaReZMEN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
так и понимать это выборка из процедуры а не из таблицы... Ну это просто затупил когда писал в форум По поводу индексов скажу так они есть но согласно анализу плана каторый показывает IBExpert ни имеют ни какого смысла. Спасибо за советы седня попробую и сразу отпишусь о результатах. |
||||
|
|||||
| Deniz |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
это я знаю. Вопрос касался разницы в кол-ве параметров запроса и процедуры.
-------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
| WaReZMEN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 683 Регистрация: 9.6.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: 3 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |