Переключение на Главную Страницу Страницы: 1 [2] 3 4 5 ОтправитьПечать
Очень популярная тема (более 25 ответов) ИндексированнаяТаблица метод Сортировать... (число прочтений - 30235 )
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #15 - 17. Июля 2006 :: 07:00
Печать  
Цитата:
Так и сделал.

Молодец!

Тогда еще одну вещь скажу:
Не используй метод "Сортировать" вообще.

Используй добавление индекса и выборку по этому индексу - будет быстрее.
Никаких потерь на индексирование простых типов нет, поверь мне.


P.S.
Автомобили из Кореи - мы на них собаку съели.
(из рекламы)
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #16 - 17. Июля 2006 :: 07:09
Печать  
По поводу индексирования по хронологии еще поясню:

Время построения индекса по внутреннему представлению и по хронологии (44000 документов):
Код
Выбрать все
"*Контрагент, *Документ": 00.00.00.281
"*Контрагент,  Документ": 00.04.05.245
 



Причем оптимизация теоретически нереальна.
Оптимизировать здесь нужно доступ к данным, а это эффективно можно сделать только на этапе выполнения запроса.

Отсюда и советы в предыдущих комментариях.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #17 - 17. Июля 2006 :: 07:09
Печать  
kms писал(а) 17. Июля 2006 :: 07:00:
Цитата:
Так и сделал.

Используй добавление индекса и выборку по этому индексу - будет быстрее.
Никаких потерь на индексирование простых типов нет, поверь мне.


P.S.
Автомобили из Кореи - мы на них собаку съели.
(из рекламы)


Извини, не понял. С прямыми запросами совсем недавно работаю. Подробнее можно - как это (может простейший пример какой дашь)? И бможно ли это сделать для базы ДБФ.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #18 - 17. Июля 2006 :: 07:14
Печать  
seleand писал(а) 17. Июля 2006 :: 07:09:
Извини, не понял. С прямыми запросами совсем недавно работаю. Подробнее можно - как это (может простейший пример какой дашь)? И бможно ли это сделать для базы ДБФ.

Это уже для индексированной таблицы:

Вместо
Код
Выбрать все
ит.Сортировать("Дата,Номер");
ит.ВыбратьСтроки();
Пока ит.ПолучитьСтроку() =1 Цикл
...
 


используй
Код
Выбрать все
ит.ДобавитьИндекс("ДатаНомер", "Дата,Номер");
ит.ВыбратьСтроки("ДатаНомер");
Пока ит.ПолучитьСтроку("ДатаНомер") =1 Цикл
...
 


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

De quelle planète es-tu?
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #19 - 17. Июля 2006 :: 07:20
Печать  
Но это тоже надо делать для тзПотомки на каждом уровне иерархии?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #20 - 17. Июля 2006 :: 07:28
Печать  
seleand писал(а) 17. Июля 2006 :: 07:20:
Но это тоже надо делать для тзПотомки на каждом уровне иерархии?

Поступим проще.

Ты сделай, и в отладчике зацени распределение времени (в профилировщике).
Если будут проблемы, тогда и будем думать.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #21 - 17. Июля 2006 :: 07:34
Печать  
Ок. Спасибо!
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #22 - 17. Июля 2006 :: 08:15
Печать  
seleand писал(а) 17. Июля 2006 :: 06:55:
Но вот то, что сортировать приходится на каждом уровне иерархии - не очень нравится. ИМХО это может сводить на нет выигрыш в скорости прямого запроса, поскольку результат запроса приходится многократно сортировать...

После группировки в тзПотомки всегда есть индекс, который был задан в методе Группировать(). Т.е. после вызова
ИТ.Группировать("Фамилия: Фамилия; Имя: Имя", "Сумма");
на первом уровне будет индекс с именем "Фамилия", на втором (во всех потомках) - "Имя".  В документации правда этого не написано, потому что мне это казалось очевидным  Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #23 - 17. Июля 2006 :: 08:25
Печать  
ADirks писал(а) 17. Июля 2006 :: 08:15:
После группировки в тзПотомки всегда есть индекс, который был задан в методе Группировать(). Т.е. после вызова
ИТ.Группировать("Фамилия: Фамилия; Имя: Имя", "Сумма");
на первом уровне будет индекс с именем "Фамилия", на втором (во всех потомках) - "Имя".  В документации правда этого не написано, потому что мне это казалось очевидным  Улыбка

Ну надо же как, оказывается Улыбка

Я, правда, всегда группирую только по внутреннему представлению.
А потом уже могу отсортировать потомков по какому-то другому принципу.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #24 - 17. Июля 2006 :: 08:41
Печать  
Проверил замером производительности. Индекс почти не дал выигрыша по сравнению с сортировать (выигрыш составил буквально десятые доли секунды, при том, что время вывода строк в отчет  составляет секунд 20).
  
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #25 - 17. Июля 2006 :: 08:43
Печать  
ADirks писал(а) 17. Июля 2006 :: 08:15:
seleand писал(а) 17. Июля 2006 :: 06:55:
Но вот то, что сортировать приходится на каждом уровне иерархии - не очень нравится. ИМХО это может сводить на нет выигрыш в скорости прямого запроса, поскольку результат запроса приходится многократно сортировать...

После группировки в тзПотомки всегда есть индекс, который был задан в методе Группировать(). Т.е. после вызова
ИТ.Группировать("Фамилия: Фамилия; Имя: Имя", "Сумма");
на первом уровне будет индекс с именем "Фамилия", на втором (во всех потомках) - "Имя".  В документации правда этого не написано, потому что мне это казалось очевидным  Улыбка


Вот это зря не описали в документации.  Щас попробую использовать.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #26 - 17. Июля 2006 :: 08:45
Печать  
seleand писал(а) 17. Июля 2006 :: 08:41:
Проверил замером производительности. Индекс почти не дал выигрыша по сравнению с сортировать (выигрыш составил буквально десятые доли секунды, при том, что время вывода строк в отчет  составляет секунд 20).

А основные потери-то на чем?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #27 - 17. Июля 2006 :: 08:51
Печать  
Основное время 16 сек. занимает процедура ВывестиГруппировку, которая выполняется рекурсивно (обращение присходит 787 раз).
И индексы, которые создаются при выполнении Группировать не меняют ситуацию.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #28 - 17. Июля 2006 :: 08:52
Печать  
Не, ну галку "включать время для процедур и функций" надо снять...
  

De quelle planète es-tu?
Наверх
 
IP записан
 
seleand
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 22. Июня 2006
Re: ИндексированнаяТаблица метод Сортировать...
Ответ #29 - 17. Июля 2006 :: 08:55
Печать  
kms писал(а) 17. Июля 2006 :: 08:52:
Не, ну галку "включать время для процедур и функций" надо снять...


Пардон. Не очень часто пользуюсь замером. А где ее снять, че-то найти не могу...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 5
ОтправитьПечать