Имя: Пароль:
1C
1С v8
Ускорить процесс поиска
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) Ну он будет думать, что там реально табличка, не подозревая о дереве.