Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

Поиск в БД   Найти похожие ветки 

 
SarDoX   (2005-01-23 06:12) [0]

база аксесс. есть таблица из тысячи строк. 2 стобца: Nazvanie / Recept
названия короткие, но вот рецепты - бывают и по пол страницы..
мне нужно искать слово(edit1.text) в рецепте(Recept).
сделал так

var zapros:string;
----
form1.ADOQuery1.active:=false;
form1.ADOQuery1.close;
form1.ADOQuery1.SQL.Clear;
zapros:="SELECT nazvanie FROM MYNEWTABLE Where recept like  "%" + edit1.text + "%"";//в эдите храниться искомое слово
form1.ADOQuery1.SQL.text:=zapros  ;
form1.ADOQuery1.open;
но уж очень долго это. можно как нить побыстрее?


 
aus   (2005-01-23 08:24) [1]

Попробуй использовать фильтр для клиентского НД.

ADOQuery1.Filtered := true; //1 раз
................
ADOQuery1.Filter := "recept like ...


Но лучше всего в даном случае (мое личное мнение) использовать OnFilterRecord для DBGrid, т.к фильтр не всегда можно составить так, как тебе требуется (по текстовому полю), есть ограничения на маску, почитай в MSDN.


 
sniknik ©   (2005-01-23 10:48) [2]

быстрее будет если использовать поиск по индексу (тот который индекс будет использовать) и соответственно этот иддекс по этому полю должен быть.

в данном случае индекс не используется, вот если убрать первый знак % то будет... но смысл запроса несколько поменяется.
ищеш вхождение в большом тексте, это не только полный скан таблици но и скан каждого "нехилого" текста, по твоим же словам, в каждой записи.

если не менять смысла, заменить форму всетаки придется, есть такой способ с дополнительной индексированной таблицей куда вносятся слова из текста и ссылка на запись в которой оно находится. это в общем, если подробности, найди описание как реаализован полнотекстовый поиск в MSSQL тебе придется тоже самому реализовывать.


 
Atomic   (2005-01-24 08:28) [3]

ADOQuery1.Filtered := False;
ADOQuery1.Filter := "[Recept]="""+edit1.text+"""";
ADOQuery1.Filtered := True;


 
Erik1 ©   (2005-01-24 11:21) [4]

И недадо забывать, что значение надо не подстовлять в запрос, а задавать через параметр. Хотя в данном случае скорости это немного добавит. Больно уж запрос тяжелый.


 
Johnmen ©   (2005-01-24 11:24) [5]

>form1.ADOQuery1.active:=false;
>form1.ADOQuery1.close;

Масло масляное ?

>form1.ADOQuery1.SQL.Clear;
>form1.ADOQuery1.SQL.text:=zapros  ;

Масло масляное ?


 
Sergey13 ©   (2005-01-24 11:32) [6]

>но уж очень долго это.
А скока "долго"? Для кого "долго"?
>можно как нить побыстрее?
Наверное можно, но полей в БД должно быть больше, как и самих таблиц. Иными словами, перепроектировать все это надо, ИМХО (хотя для поваренной книги может и сойдет). Искать то наверное надо по конкретным критериям, типа по ингридиентам, по продолжительности готовки и т.д. Вот и надо эти критерии как то выделять, а не просто в текст совать. Тут кстати еще нарваться можно на разные формы слов.


 
SarDoX   (2005-01-25 07:42) [7]

Sergey13
Да, кулинарная книга. Перепроектировать надо бы, но у меня и так 1000 записей, т.е я 1000 раз нажимал копировать - всавить и уже так замучался, что повторять не хочу..


 
Sergey13 ©   (2005-01-25 09:53) [8]

2[7] SarDoX   (25.01.05 07:42)
Если устал - отдохни. 8-)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.294 c
14-1106724470
NewDelpher
2005-01-26 10:27
2005.02.20
Отношение к русским за границей


10-1084278320
tonkov
2004-05-11 16:25
2005.02.20
Проблема с плагином под IE


3-1106048248
Argentum
2005-01-18 14:37
2005.02.20
Как быстро присвоить lookup колонке в TDBGrid значение null


1-1107217901
TButton
2005-02-01 03:31
2005.02.20
CGI на Delphi


1-1107363505
БезИмени
2005-02-02 19:58
2005.02.20
Визуальній конструктор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский