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

Вниз

Запрос SQL   Найти похожие ветки 

 
Коля   (2014-02-12 15:42) [0]

Привет уважаемы мастера программирования!
Есть таблица в dbf. В ней больше 30000 строк.
делаю поиск по нет SQL- запросом
procedure TForm2.edt2KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 qry1.SQL.Text:="SELECT * FROM sp_ls WHERE UPPER(TORG) LIKE UPPER("""+edt2.Text+"%"")";
qry1.Active:= True;
qry1.Open;
end;

поиск работает, но очень медленно (один символ, введенный в edit2, обрабатывает примерно 2 сек).
Подскажите можно ли по такой большой таблице уменьшить время поиска?


 
RWolf ©   (2014-02-12 16:14) [1]

это очень маленькая таблица.
поиск ускоряется построением индексов.


 
Коля   (2014-02-12 16:16) [2]


> поиск ускоряется построением индексов.

У меня всего одна таблица.
подскажите примером с индексами тогда


 
Inovet ©   (2014-02-12 16:20) [3]

> [2] Коля   (12.02.14 16:16)
> примером с индексами

Что-нить вроде
UPPER(TORG)


 
Коля   (2014-02-12 16:25) [4]

у меня все поля текстовые.
подскажите полным запросом пожалуйста


 
sniknik ©   (2014-02-12 16:46) [5]

> примером с индексами
не бывает примеров с индексами... бывает, что один и тот же запрос или использует индекс или нет. есть этот самый индекс или нет.

> Что-нить вроде
> UPPER(TORG)
вот это как раз пример не использования индекса даже если он есть. ... хотя... возможны варианты так например в фоксе можно было делать индексы по результатам функций, и соответственно они работали если именно так их, с вызовом функции, и использовать.  

> подскажите полным запросом пожалуйста
"SELECT * FROM sp_ls WHERE TORG LIKE """+edt2.Text+"%"""


 
Anatoly Podgoretsky ©   (2014-02-12 16:49) [6]

а DBF это какая СУБД?


 
Inovet ©   (2014-02-12 20:30) [7]

> [5] sniknik ©   (12.02.14 16:46)
> так например в фоксе можно было д

Ну так речь о Фоксе скорее всего.


 
Inovet ©   (2014-02-12 20:31) [8]

> [7] Inovet ©   (12.02.14 20:30)

UPPER(TORG)
это индексное выражение для Фокса.


 
Юрий Зотов ©   (2014-02-12 22:12) [9]

> Коля   (12.02.14 15:42)

Попробуйте ускорить "малой кровью":

1. У Edit2 включите UpperCase, а из строки запроса второй UPPER уберите;
2. Edit2.Text передавайте не в строке запроса, а через параметр;
3. Строку запроса сделайте константой и вынесите за пределы обработчика.
4. Присвоение qry1.SQL.Text и Qry1.Prepare тоже вынесите за пределы обработчика.

Ускориться должно, но вот насколько - не знаю. Надо пробовать. Возможно, для такой маленькой таблицы этого будет достаточно.


 
sniknik ©   (2014-02-12 22:46) [10]

> Ну так речь о Фоксе скорее всего.
вряд ли. вот это вот, явно указывает на дельфи -
procedure TForm2.edt2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
...
end;


 
Anatoly Podgoretsky ©   (2014-02-12 22:59) [11]


> это индексное выражение для Фокса.

Такое же и для dBase (LocalSQL)


 
Коля   (2014-02-12 22:59) [12]


> Ну так речь о Фоксе скорее всего.

Нет не фокс у меня. в стандартный DBE администратор


 
Anatoly Podgoretsky ©   (2014-02-12 23:00) [13]


> Коля   (12.02.14 22:59) [12]

Молчит зараза, истинный партизан.


 
Dennis I. Komarov ©   (2014-02-12 23:11) [14]


> Молчит зараза, истинный партизан.

Пытки запрещены женевской конвенцией, да не знает он.


 
Inovet ©   (2014-02-12 23:45) [15]

> [12] Коля   (12.02.14 22:59)
> Нет не фокс у меня. в стандартный DBE администратор

Ну так в БДЕ что поставил на ДБФ. Я его не помню когда последний раз запускал 10+ лет назад, где-то там должны быть и индексы и тип базы для подключения.

А вообще выбросить его надо на ту же свалку, где и подобрал. ДБФ принципиально?


 
Коля   (2014-02-12 23:58) [16]


> ДБФ принципиально?
</>
Да не принципиально. пробовал через Access. но не получилось ни чего.
Кинете ссылку где почитать по базы в Access, пожалуйста.


 
Inovet ©   (2014-02-13 00:12) [17]

> [16] Коля   (12.02.14 23:58)

Только не путай Access и Jet &#151; первый оболочка над вторым, из Делфи надо работать со вторым.


 
sniknik ©   (2014-02-13 08:30) [18]

> Кинете ссылку где почитать по базы в Access
справка есть в акцессе (не уверен про новые но тот что в 2003м офисе содержит), можно стартовать без него сразу файлом - JETSQL40.CHM (найти у себя на компе).
это самая полезная помощь про базы акцесс что вообще встречал... ИМХО конечно.


 
Anatoly Podgoretsky ©   (2014-02-13 14:13) [19]


> Коля   (12.02.14 23:58) [16]
> > ДБФ принципиально?</>Да не принципиально. пробовал через
> Access. но не получилось ни чего.Кинете ссылку где почитать
> по базы в Access, пожалуйста.

Забудь про Акцесс - слишком сложно и плохо для тебя, лучше изучи MS SQL


 
Коля   (2014-02-14 08:23) [20]

спасибо. все разобрался. Сделал в access.


 
_Amoeba   (2014-02-14 12:23) [21]

Как-то никто не заметил у ТС в коде такое:

qry1.Active:= True;
qry1.Open;


Здесь ведь подряд делается одно и то же, только названо оно по-разному.


 
Inovet ©   (2014-02-14 14:29) [22]

> [21] _Amoeba   (14.02.14 12:23)

Да заметили, только грузить автора не стали.



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

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

Наверх




Память: 0.52 MB
Время: 0.007 c
6-1275486933
Iceastral
2010-06-02 17:55
2015.05.10
TCPClient/TCPServer, error 10054


15-1411488847
бедный юзер
2014-09-23 20:14
2015.05.10
Как поставить skype на XP SP2?


15-1411392772
achiz
2014-09-22 17:32
2015.05.10
Стоимость программа для базы данных агентства недвижимости


15-1411158602
Юрий
2014-09-20 00:30
2015.05.10
С днем рождения ! 20 сентября 2014 суббота


15-1411486735
Kerk
2014-09-23 19:38
2015.05.10
выбор NAS для дома для себя