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

Вниз

помогите составить sql-запрос, а то поиск медленнее чем в paradox   Найти похожие ветки 

 
Johnny_Raw   (2006-08-20 14:20) [0]

Здравствуйте уважаемые. Очень нужен совет в след. вопросе:
есть массив строк которые, нужно заменить на строки из БД. При использовании BDE + Paradox7 делал это так:

var
 Found: Variant;
 Array: Array of Array of String;
for k:=0 to High(array) do
begin
 Found:=DataModule1.Table1.Lookup("Col2", Array[k,0], "Col1");
 if not varisnull(Found)then
   Array[k, 0]:=Found;
 Found:=DataModule1.Table1.Lookup("Col2", Array[k,1], "Col1");
 if not varisnull(Found)then
   Array[k, 1]:=Found;
 Found:=DataModule1.Table1.Lookup("Col2", Array[k,2], "Col1");
 if not varisnull(Found)then
   Array[k, 2]:=Found;


получалось очень медленно ((

Решил убыстрить процесс и установил mysql 4.1 и zeoslib
ничего умнее не придумал, чем:

for k:=0 to High(Array) do
begin
  Fm1.ZQuery1.Close;
  Fm1.ZQuery1.SQL.Clear;
  Fm1.ZQuery1.SQL.Add("SELECT Col1 from TestTable where Col2="""+Array[k, 0]+"""");
  Fm1.ZQuery1.Open;
  if Fm1.ZQuery1.Fields[0].AsVariant <> null then
    Array[k, 0]:=Fm1.ZQuery1.Fields[0].AsString;
  Fm1.ZQuery1.Close;
  Fm1.ZQuery1.SQL.Clear;
  Fm1.ZQuery1.SQL.Add("SELECT Col1 from TestTable where Col2="""+Array[k, 1]+"""");
  Fm1.ZQuery1.Open;
  if Fm1.ZQuery1.Fields[0].AsVariant <> null then
    Array[k, 1]:=Fm1.ZQuery1.Fields[0].AsString;
 Fm1.ZQuery1.Close;
  Fm1.ZQuery1.SQL.Clear;
  Fm1.ZQuery1.SQL.Add("SELECT Col1 from TestTable where Col2="""+Array[k, 2]+"""");
  Fm1.ZQuery1.Open;
  if Fm1.ZQuery1.Fields[0].AsVariant <> null then
    Array[k, 2]:=Fm1.ZQuery1.Fields[0].AsString;
end;
   
 
в результате получилось еще медленней.
Это мой первый опыт работы с sql, может есть более быстрый вариант, позволяющий использовать достоинства sql?


 
Anatoly Podgoretsky ©   (2006-08-20 14:33) [1]

Поиск осуществляется на стороне клиента, метод Locate, а он у тебя не наблюдается, если не считать за него Lookup.


 
Johnny_Raw   (2006-08-20 15:45) [2]

Не понял суть ответа. Все происходит на локальном компьютере. А метод Locate это имхо тот же Lookup только с перемещением по записям


 
Anatoly Podgoretsky ©   (2006-08-20 15:57) [3]

Метод Lookup это подстановка, а не поиск. Подсмотреть


 
Johnny_Raw   (2006-08-20 18:16) [4]

мы друг-друга не поняли, но тем не менее, благодаря этому я нашел что метод lookup у query тоже есть (select я применял не в тему). Т.е. вначале нужно было select * , а потом lookup. Поиск стал быстрее более чем в два раза.


 
Dok   (2006-08-20 18:29) [5]

в чем задача то?


 
Slym ©   (2006-08-21 06:08) [6]

Fm1.ZQuery1.Close;
Fm1.ZQuery1.SQL.Clear;
Fm1.ZQuery1.SQL.Add("SELECT Col1 from TestTable where Col2= :Param;");
Fm1.ZQuery1.Prepared:=true;
Fm1.ZQuery1.Open;
for k:=0 to High(Array) do
begin
for i:=0 to 2 do
begin
 Fm1.ZQuery1.Parameters[0].Value:=Array[k, i];
 Fm1.ZQuery1.Requery;
 Array[k, i]:=Fm1.ZQuery1.Fields[0].AsString;
end;
end;


 
Slym ©   (2006-08-21 06:18) [7]

Индекс по Col2 имеется?



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

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

Наверх




Память: 0.46 MB
Время: 0.041 c
15-1158676446
oldman
2006-09-19 18:34
2006.10.15
Плюнул на фильм, купил книгу.


15-1158737001
pasha_golub
2006-09-20 11:23
2006.10.15
Вакансии в Москве


15-1157525572
Kerk
2006-09-06 10:52
2006.10.15
Нижегородцы, АУ!


2-1159528840
RebroFF
2006-09-29 15:20
2006.10.15
Корректное отображение кириллицы


15-1158674598
Gerlon
2006-09-19 18:03
2006.10.15
Shareware





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский