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

Вниз

Запрос 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.002 c
2-1392205331
Коля
2014-02-12 15:42
2015.05.10
Запрос SQL


15-1411744010
Alarm
2014-09-26 19:06
2015.05.10
Без темы, обидно за форум


15-1411538185
ВладОшин
2014-09-24 09:56
2015.05.10
Хочу СкайпоАськоЖабер :)


2-1392309493
alexdn
2014-02-13 20:38
2015.05.10
Чтение из реестра


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





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