Текущий архив: 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 — первый оболочка над вторым, из Делфи надо работать со вторым.
← →
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.49 MB
Время: 0.002 c