|
Как быстро найти предыдущий документ (алгоритм) | ☑ | ||
---|---|---|---|---|
0
silkw
29.01.13
✎
13:33
|
Доброго времени суток!
Определенное время уже мучает один алгорим: Необходим быстрый поиск из документа, предыдущего документа. Делаю через запрос и виртуальную таблицу СрезПоследних(&ДатаК, НужныйМнеОтбор), но данный вариант медленоват, т.к. потом из этого набора делать поиск документа по максимальной дате или же сортировать и брать первый. Может кто уже проходил эту траблу и знает более скоростной алгоритм поиска? |
|||
1
Fragster
гуру
29.01.13
✎
13:34
|
Выбрать Первые 1 Из РегистрСведений.РегистрСведенийГде Период < &МоментВремени Упорядочить по Период Убыв
|
|||
2
silkw
29.01.13
✎
13:34
|
платформа 8.1
|
|||
3
Wobland
29.01.13
✎
13:36
|
Fragster дал ответ, когда ещё вопрос не был закончен ;)
|
|||
4
silkw
29.01.13
✎
13:36
|
(1) делал и такой "финт ушами", скоростнее нет вариантов?
|
|||
5
Jstunner
29.01.13
✎
13:37
|
(4) ты фанат микрооптимизаций или есть обоснования из профайлера?
|
|||
6
silkw
29.01.13
✎
13:40
|
(5)большой объем документов, а поиск ведется по отбору... из замера производительнгости этот запрос выдает значительные сумма времени
|
|||
7
Jstunner
29.01.13
✎
13:42
|
(6) но вообще - да, есть скоростнее. Создать и поддерживать реквизит ПредыдущийДокумент
|
|||
8
silkw
29.01.13
✎
13:45
|
(7) но что бы заполнить этот реквизит, потребуется тоже время для выполнения запроса, что и без этого реквизита.
Задача ускорить время заполнения документа, а документ заполняется на основе предыдущего дока. |
|||
9
Jstunner
29.01.13
✎
13:48
|
(8) мои телепатические возможности исчерпали ману. Озвучь задачу полностью. Или хотя бы, в какой момент и у кого тормозит?
|
|||
10
silkw
29.01.13
✎
13:52
|
(9) все тормоза при автоматическом заполнении документа....
из анализа кода и запросов, выявлены слабые места, а именно запрос который ищет предыдущий документ (а таких запроса два, но с разными отборами) |
|||
11
silkw
29.01.13
✎
13:53
|
+(10) перепробовал кучу вариаций запросов, но ниже 8 сек, не получилось спуститься
|
|||
12
silkw
29.01.13
✎
13:54
|
+(10) основной тормоз при первом заполлнении нового документа, при втором запорлнении время немного падает
|
|||
13
Галахад
гуру
29.01.13
✎
13:54
|
Фига себе. Заведи РС и пиши туда последний документ.
|
|||
14
Jstunner
29.01.13
✎
13:54
|
(10) а можно поподробней, сколько точно по времени длятся тормоза при заполнении документА?
|
|||
15
silkw
29.01.13
✎
13:54
|
+(12) при втором заполнении = при повторном заполнении
|
|||
16
Jstunner
29.01.13
✎
13:56
|
Покажи-ка запрос, который "8 секунд"
|
|||
17
Fragster
гуру
29.01.13
✎
13:58
|
я не верю, что запрос из (1) тормозит. Пусть автор приведет свой вариант.
|
|||
18
silkw
29.01.13
✎
14:00
|
(16) и (17) в каких единицах измеряет замер производительности? В милисекундах или в секундах?
|
|||
19
Jstunner
29.01.13
✎
14:01
|
(18) убил..
|
|||
20
Fragster
гуру
29.01.13
✎
14:03
|
(18) публика скандирует "Запрос! Запрос!"
|
|||
21
andreymongol82
29.01.13
✎
14:05
|
(18) В парсеках
|
|||
22
1C-band
29.01.13
✎
14:07
|
(1) Не взлетит.
(0) АВТОУПОРЯДОЧИВАНИЕ |
|||
23
silkw
29.01.13
✎
14:08
|
Данный запрос уже пережил много модификаций, но пока я остановился на этом варианте:
ВЫБРАТЬ ПутевойЛист.Период КАК ДатаПЛ, ПутевойЛист.Регистратор КАК ПутевойЛист, ПутевойЛист.ГосНомер КАК ФизЛицоПЛ, ОбработкаПутевогоЛиста.НомерПутевогоЛиста КАК ОбработкаПутевогоЛиста, ОбработкаПутевогоЛиста.ГосНомер КАК ФизЛицоОПЛ ПОМЕСТИТЬ Документы ИЗ РегистрСведений.атпПутевойЛист.СрезПоследних( &ДатаК, Регистратор.ФизЛицоПервойСмены = &Водитель ИЛИ Регистратор.ФизЛицоВторойСмены = &Водитель) КАК ПутевойЛист ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.атпОбработкаПутевогоЛиста КАК ОбработкаПутевогоЛиста ПО ПутевойЛист.Регистратор = ОбработкаПутевогоЛиста.НомерПутевогоЛиста ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ВЗ.ДатаПЛ) КАК ПериодДок ПОМЕСТИТЬ МаксДата ИЗ Документы КАК ВЗ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Документы.ПутевойЛист КАК ПутевойЛист, Документы.ОбработкаПутевогоЛиста КАК ОбработкаПутевогоЛиста, МаксДата.ПериодДок КАК МаксДата ИЗ Документы КАК Документы ЛЕВОЕ СОЕДИНЕНИЕ МаксДата КАК МаксДата ПО (ИСТИНА) ГДЕ НАЧАЛОПЕРИОДА(Документы.ПутевойЛист.Дата, ДЕНЬ) = МаксДата.ПериодДок |
|||
24
RomaH
naïve
29.01.13
✎
14:11
|
(23) нафига левое соединение и условие в ГДЕ?
чем внутреннее не устроило? |
|||
25
Fragster
гуру
29.01.13
✎
14:12
|
(22) дружище, кури момент времени, там все правильно!
(23) а где там вариант из (1)? |
|||
26
silkw
29.01.13
✎
14:13
|
(24) быстрее будет?
|
|||
27
Fragster
гуру
29.01.13
✎
14:14
|
(26) 90% за "не будет", потому что виртуальная таблица в качестве той, к которой данные присоединяются
|
|||
28
RomaH
naïve
29.01.13
✎
14:15
|
и зачем последние два запроса?
сразу сгруппировать, найти максимум по дате и сравнить в ИМЕЮЩИЕ ? |
|||
29
silkw
29.01.13
✎
14:15
|
(25) вариант из (1) был в самом начале.... с него то все и началось
|
|||
30
RomaH
naïve
29.01.13
✎
14:15
|
ГДЕ
НАЧАЛОПЕРИОДА(Документы.ПутевойЛист.Дата, ДЕНЬ) = МаксДата.ПериодДок условие может и не выполнится никогда - нормально? |
|||
31
Jstunner
29.01.13
✎
14:15
|
(23) проблема в условии к вирт таблице. Вытащи физлица в РС
|
|||
32
hhhh
29.01.13
✎
14:21
|
Регистратор.ФизЛицоПервойСмены - вот эта фишка у вас превращает миллисекунды в секунды.
поставьте эти поля в измерения регистра. ну хотя бы проверьте, точно-точно у вас на этих реквизитах: ФизЛицоПервойСмены,ФизЛицоВторойСмены и ОбработкаПутевогоЛиста.НомерПутевогоЛиста стоит галка "Индексировать". |
|||
33
silkw
29.01.13
✎
14:29
|
(32) вот то то и оно.... умники до меня в регистре сделали ФизЛицоПервойСмены - СТРОКА!!! Приходится тянуть из ..опы.
|
|||
34
Jstunner
29.01.13
✎
14:35
|
(33) какая разница, строка или ссылка? А хаять предшественников - вообще дело неблагородное. Тебе что-то мешает переделать структуру базы под новые задачи?
|
|||
35
silkw
29.01.13
✎
14:42
|
(34) большая разница.... строить выражение по ссылке на объект или по строке, тем более где указано ФИО (знаешь сколько бывает однофамильцев, одноименцев и одноотчествеников одновремено).
Мне мешает переделать базу, куча документов (около 3-х лет), которые придется либо перепроводить (а перепроводятся они цепочками) либо переписывать алгоритмы из взаимодействия. |
|||
36
fisher
29.01.13
✎
14:46
|
Автор. Если у тебя тормозит запрос из (1), то тебе уже ничего не поможет. Только взрывать консерваторию.
|
|||
37
silkw
29.01.13
✎
14:46
|
Лана.... тему закрываем, мысль переделать структуру базы давно летала в голове, придется делать.
Все большое спасибо, что посочувствовали. |
|||
38
Jstunner
29.01.13
✎
14:57
|
(35) открою небольшой секрет: ссылка - это строка..
"Мне мешает переделать базу, куча документов (около 3-х лет)" Написать обработку которая выполнить движения только по нужному регистру, запустить на ночь, если не успеет - по частям. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |