|
Ускорить процесс поиска | ☑ | ||
---|---|---|---|---|
0
Kamich
13.06.13
✎
16:15
|
Добрый день.
Как ускорить процесс поиска в запросе? БД весит 500 мб. вот код запроса: Запрос=Новый Запрос(); Запрос.Текст= "ВЫБРАТЬ | БазаНомеров1База.НомерТелефона, | БазаНомеров1База.ФИО, | БазаНомеров1База.Адрес |ИЗ | Документ.БазаНомеров.База КАК БазаНомеров1База |ГДЕ | БазаНомеров1База.ФИО ПОДОБНО ""%"" + &ФИО + ""%"""; Запрос.УстановитьПараметр("ФИО",ПоискФИО); ЭлементыФОрмы.ТП.Видимость=Истина; Результат = Запрос.Выполнить(); ТаблицаРезультата = Результат.Выгрузить(); ТабЗнач = ТП.Выгрузить(); ТП.Загрузить(ТаблицаРезультата); |
|||
1
Maxus43
13.06.13
✎
16:18
|
имхо никак... Лойк не ускоряется
|
|||
2
Maxus43
13.06.13
✎
16:19
|
*лайк
|
|||
3
arsik
гуру
13.06.13
✎
16:20
|
можно попробовать через полнотекстовый поиск.
|
|||
4
Kamich
13.06.13
✎
16:29
|
(1) (3)
Если к примеру данные эти же самые перенести в регистрСведений,и задать в запросе поиск по РегиструСведений,будет ли быстрее или нет?! |
|||
5
AaNnDdRrEeYy
13.06.13
✎
16:33
|
если в регистре измерение ФИО проиндексируешь и поднимишь его на самый верх то будет
|
|||
6
acsent
13.06.13
✎
16:36
|
(4) Лойк не ускоряется
|
|||
7
Kamich
13.06.13
✎
16:37
|
(5)Примерно во сколько раз?так для инфы)
|
|||
8
GANR
13.06.13
✎
16:37
|
М е т о д и ч е с к и - сделать так, чтобы не было необходимости использовать запрос в (0), который никак не использует индекс.
(4) Какая разница, что справочник, что РС используют одни и те же объекты в MS SQL и индексы. Не даст это ничего. (3) Ну может быть это еще как-то поможет. (5) А БазаНомеров1База.ФИО ПОДОБНО ""%"" + &ФИО + ""%"" не будет использовать эти индексы хоть обычные, хоть кластерные, если только специализированный индекс полнотекстового поиска может помочь хотя-бы теоретически. |
|||
9
Kamich
13.06.13
✎
16:40
|
(8) Запрос по сути - очень ускоренный процесс поиска по базе.
P.s.просмотрел количество объектов в Докуменетах ~ количество 600 000!!! Подскажите как упростить работу поиска? |
|||
10
Wobland
13.06.13
✎
16:44
|
(9) нанять 600 тысяч человек. это упростит
|
|||
11
AaNnDdRrEeYy
13.06.13
✎
16:45
|
(8) да, ПОДОБНО не использует индекс у Гилева сейчас глянул.
тогда только полнотекстовый поиск. |
|||
12
Kamich
13.06.13
✎
16:49
|
(11) (10) (8) (3) (1) Понятно)
Всем спасибо) |
|||
13
Heckfy
13.06.13
✎
16:52
|
Если поменять строку
БазаНомеров1База.ФИО ПОДОБНО ""%"" + &ФИО + ""%"""; на БазаНомеров1База.ФИО ПОДОБНО + &ФИО + ""%"""; Будет быстрее работать. |
|||
14
GANR
13.06.13
✎
16:55
|
(9) Представляете, что такое таблица индекса? Запрос - это запрограммированная на высоком уровне работа с файлами на диске - и ничего больше. БД на Турбо-Паскаль делал в ВУЗе, где одна таблица - это отдельный файл (данные - отдельно, индексы - еще одна таблица), в MS SQL, по сути, отличие лишь визуальное. Понимаете принципы работы индексов и почему по нему невозможен поиск (0)?
|
|||
15
Kamich
13.06.13
✎
17:06
|
(14) Понятно)
|
|||
16
H A D G E H O G s
13.06.13
✎
17:10
|
(15) Вряд ли.
|
|||
17
GANR
13.06.13
✎
17:12
|
(15) Индекс по ФИО в данном случае - это грубо говоря, массив позиций строк БД в списке сотрудников, упорядоченном по возрастанию/убыванию ФИО.
Исходные данные: 1. Сидоровов Сидор Сидорович 2. Иванов Иван Иванович 3. Петров Петр Петрович Индекс (по возрастанию ФИО): 2 (позиция Иванов Иван Иванович) 3 (позиция Петров Петр Петрович) 1 (позиция Сидоровов Сидор Сидорович) Информации о каких-то подстроках этот индекс в себе не несет, поэтому будет просто сканироваться вся таблица. А вот специальный индекс полнотекстового поиска, который содержит позиции каждой встречающейся подстроки - это другое дело. |
|||
18
H A D G E H O G s
13.06.13
✎
17:19
|
(17) Совсем ведь запутаешь.
|
|||
19
GANR
13.06.13
✎
17:20
|
(18) В этих трех соснах (17) :-)))?
|
|||
20
Kamich
13.06.13
✎
17:21
|
(17) Еще стало яснее)
|
|||
21
H A D G E H O G s
13.06.13
✎
17:22
|
(19) Ну он будет думать, что там реально табличка, не подозревая о дереве.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |