powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запрос - один, параметры - похожие, выполняется - по-разному :(
9 сообщений из 9, страница 1 из 1
Запрос - один, параметры - похожие, выполняется - по-разному :(
    #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
Запрос - один, параметры - похожие, выполняется - по-разному :(
    #32116992
duha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет.

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

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

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

- Может Close делать всегда, без проверки.
- Можно попробовать использовать компоненты не BDE, а ADO, они все же ближе MS SQL.
- А текст запроса где хранится и как формируется?
...
Рейтинг: 0 / 0
Запрос - один, параметры - похожие, выполняется - по-разному :(
    #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
Запрос - один, параметры - похожие, выполняется - по-разному :(
    #32117109
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To vladuha

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

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

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


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