Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

ADO поиск   Найти похожие ветки 

 
777 ©   (2002-04-11 18:37) [0]

Имеется DB MSSQL (>140000 записей),коннект через ADO, надо организовать быстрый поиск.
К сожалению на данный момент в SQL я ориентируюсь
на уровне SELECT *, пытался использовать ADOTable.Lookup, Locate
- всё работает, но ОЧЧень медленно.


 
Aleksandr ©   (2002-04-11 20:28) [1]

Организовывай через формирование запроса:

with TADOQuery.Create(nil) do try
Connection:=MyConnection;
SQL.Add("SELECT * FROM "+TableName);
SQL.Add("WHERE ID1="+IntToStr(SearchId)+" AND Name1="+SearchName);
SQL.Add("ORDER By ID1");
try
Open;
DoSomething;
Close
except
end
finally
Free
end


 
Aleksandr ©   (2002-04-11 20:33) [2]

ЗЫ: У меня через такое дело таблицы в 600 000 записей в секунду укладываются... Можно также сделать формированием строки Filter у компоненты. Предпоследнюю строку запроса туда. Истчо быстрее будет, потому как фильтр работает с уже пришедшим набором данных, что его неслабо ускоряет. Тот же эффект будет, если набор данных у тебя был уже открыт, и в вышеуказанный код после Connection вставляешь:
DataSet:=MyOpenedQuery;


 
777 ©   (2002-04-11 20:37) [3]


> Aleksandr ©

спасибо!


 
777 ©   (2002-04-12 11:43) [4]

А как всё-таки быть с динамическим поиском,
а-ля FindNearest?


 
Johnmen ©   (2002-04-12 11:55) [5]

SELECT * FROM TBL WHERE FLD LIKE ....
для символьных полей.


 
Delirium ©   (2002-04-12 12:28) [6]

Вообще RecordSet-ы могут быть "проидексированы", как результат такой "локальной индексации" поиск с помощью Locate ускоряется в несколько раз. Для этого необходимо проделать следущее:

ADOQuery1.Close;
ADOQuery1.SQL.Text:="select id_name,c_name from r_names";
ADOQuery1.Open;
// А вот и "индексация" - опимизация RecordSet-а по конкретному полю
ADOQuery1.Recordset.Fields["id_name"].Properties["Optimize"].Value:=True;
ADOQuery1.Locate("id_name","17517",[loPartialKey]);



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

Текущий архив: 2002.05.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.007 c
3-17490
Vitek_m
2002-04-12 05:09
2002.05.06
ODAC/DAO , DBX или стандартные компоненты для доступа к БД


3-17499
Саша
2002-04-12 14:03
2002.05.06
Работа с файлами Html


1-17520
T2
2002-04-23 11:34
2002.05.06
Как из OutLook вытащить прикрепленные файлы?


7-17710
uuuu
2002-02-10 23:28
2002.05.06
Подскажите, кто знает! как сделать так, чтобы когда нажималась кнопка открывалось окно, например c: windows или c: program files


14-17697
MBo
2002-03-29 16:16
2002.05.06
Заинтересовался вот.