Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запрос - один, параметры - похожие, выполняется - по-разному :( / 9 сообщений из 9, страница 1 из 1
10.03.2003, 17:02
    #32116980
Karaphin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
Добрый день/утро/...
Имеется MSSQL2000, Delphi6, BDE
В TQuery запрос типа

Код: plaintext
1.
2.
3.
4.
5.
Select
  *
From
  table1
Where
  field1 like '%' + (:Name) + '%'


Соответственно, один параметр типа String

Беру строку (внешнюю), разбивая на куски и вызываю запрос, где параметр = по очереди каждый из кусков.

Код: plaintext
1.
2.
3.
4.
5.
6.
for f :=  0  to num -  1  do
  with ... do begin
    if active then close;
    ParamByName('Name').AsString := StrArray[f];
    open;
    ...
  end;


Первый проход цикла - < 1 sec, второй еще ни разу не дождался :(
в table1, смешно сказать, тыщи 2-3 строк

Может, где-то что-то как-то надо чистить (в TQuery) - я, глупый, не знаю.
ПАМАГИТЕ!!!
Раньше подобные вещи писал и ничего, а теперь - лажа какая-то :(((

Заранее благодарен...
...
Рейтинг: 0 / 0
10.03.2003, 18:05
    #32116992
duha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
привет.

может и ошибаюсь,
1. попробуй сделать поле, по которому ищешь, индексированным
2. напиши СП на сервере, в нее помести свой запрос вот так

create procedure итд
as
set nocount on
тут твой селект
--------------------------
и потом вызывай через StoredProc

удачи
...
Рейтинг: 0 / 0
10.03.2003, 21:21
    #32117034
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
Open я вижу. А Close-то присутствует?
======
Индексирование случае с like %...% не помогает.
...
Рейтинг: 0 / 0
11.03.2003, 01:45
    #32117060
MONITOR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
To Cat2: Close в этой строке if active then close;

- Может Close делать всегда, без проверки.
- Можно попробовать использовать компоненты не BDE, а ADO, они все же ближе MS SQL.
- А текст запроса где хранится и как формируется?
...
Рейтинг: 0 / 0
11.03.2003, 08:42
    #32117105
vladuha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
Лучше делать не так, а вот как:

for f := 0 to num - 1 do
with ... do begin
if active then close;
Query.SQL.Add('Select * From table1 Where field1');
SQL.Add('like ''%'+StrArray[f]+'%''');
open;
...
end;

Тады все будет работать
...
Рейтинг: 0 / 0
11.03.2003, 08:55
    #32117109
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
To vladuha

>Query.SQL.Add('Select * From table1 Where field1');
>SQL.Add('like ''%'+StrArray[f]+'%''');

а Query.SQL.Clear Пушкин будет делать, и че вы все уперлись в клиента, посмотри че на сервак уходит и че там делается!
...
Рейтинг: 0 / 0
11.03.2003, 08:57
    #32117111
duha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
а перед query.sqll.add
сделать query.sql.clear ?
...
Рейтинг: 0 / 0
11.03.2003, 09:44
    #32117130
SmaLL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
field1 like '%' + (:Name) + '%'

А зачем :Name в скобках?
...
Рейтинг: 0 / 0
11.03.2003, 14:45
    #32117418
Karaphin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос - один, параметры - похожие, выполняется - по-разному :(
2 SmaLL: без скобок он переменную не воспринимает.
На серваке там все нормально (подтверждно Query Analizer'ом), по поводу Close - такая же структура неоднократно срабатывала. Просто оказалось, что BDE'шные компоненты почему-то начинает плющить, если открыто более чем сколько-то там DataSet'ов (количество вполне разумное, штук 15, в каждом не больше ДЕСЯТКА строк). Пришлось делать еще 1 close после обработки, хотя ПО ИДЕЕ с таким количеством информации это абсолютно необязательно. Делфю начинало корячить на возвращении из процедуры GetCallBack (стандартный юнит DBTables).
Спасибо всем, кто проявил участие :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запрос - один, параметры - похожие, выполняется - по-разному :( / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]