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

Вниз

помогите составить 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
15-1159206253
vecna
2006-09-25 21:44
2006.10.15
Хорошая статейка про строки и дин.массивы.


5-1140961860
Priest
2006-02-26 16:51
2006.10.15
Assign для наследника TCollectionItem


2-1159682879
одиндватри
2006-10-01 10:07
2006.10.15
операторные скобки


2-1159685512
Roeg
2006-10-01 10:51
2006.10.15
Как вывести чужое окно на передний план?


1-1156620324
SUN_ALF
2006-08-26 23:25
2006.10.15
Перехват нажатий клавиш в системе.





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