|
Настройка сервера | ☑ | ||
---|---|---|---|---|
0
miklenew
26.09.12
✎
08:19
|
Есть запрос который выполняется 51 раз.
На рабочей (ms sql) в итоге выходит минута с копейками. На локальной (файловая) в итоге 2 секунды. Это нормально и смысла копаться нет? Или стоит искать где теряться это минута? |
|||
1
Balabass
26.09.12
✎
08:20
|
запрос покажи
|
|||
2
miklenew
26.09.12
✎
08:20
|
v 8.2 УПП. Запрос по спецификациям
|
|||
3
Balabass
26.09.12
✎
08:21
|
Типовой запрос? или сами писали?
|
|||
4
miklenew
26.09.12
✎
08:24
|
ВЫБРАТЬ
СрезПоследних.Номенклатура, СрезПоследних.СпецификацияНоменклатуры ПОМЕСТИТЬ тз ИЗ &СрезПоследних КАК СрезПоследних ; ВЫБРАТЬ тз.Номенклатура, тз.СпецификацияНоменклатуры, СпецификацииНоменклатурыИсходныеКомплектующие.Количество, СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения, СпецификацииНоменклатурыИсходныеКомплектующие.ТочкаМаршрута.Подразделение КАК Подразделение ИЗ тз КАК тз ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие ПО тз.СпецификацияНоменклатуры = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка И (СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &Номенклатура) |
|||
5
miklenew
26.09.12
✎
08:25
|
СрезПоследних это последнии активные спецификации с определённым признаком. Т.е. отбираю я их один раз и сохраняю в тз. А потом 51 раз выполняется тот запрос который привёл
|
|||
6
miklenew
26.09.12
✎
08:27
|
Суть получить применяемость. Т.е. беру одну номенклатуру ищу её применяемость. У тех номенклатур ищу тоже применяемость и так до тех пор пока не наткнусь на номенклатуры которые ни в одной спецификации как комплектующие не идут
|
|||
7
shuhard
26.09.12
✎
08:29
|
(0)[Это нормально]
нет |
|||
8
miklenew
26.09.12
✎
08:32
|
(7) Есть мысли как найти причину задержки? В сети, в сервере 1с, в sql-сервере.
|
|||
9
shuhard
26.09.12
✎
08:34
|
(8) форум почитай
|
|||
10
miklenew
26.09.12
✎
08:58
|
Попробывал на локальной машине с сервером ms sql - 22 секунды.
Т.е. похоже задержки есть и в сети и в скуле. Есть ссылка на какую нибудь конкретную тему? В основном большинство тем о том, как правильно сами запросы писать, а не о проблемах конфигурирования. |
|||
11
shuhard
26.09.12
✎
09:00
|
||||
12
miklenew
26.09.12
✎
09:03
|
А где там про железо?
|
|||
13
vmv
26.09.12
✎
09:05
|
ВЫБРАТЬ
СрезПоследних.Номенклатура, СрезПоследних.СпецификацияНоменклатуры ПОМЕСТИТЬ тз ИЗ &СрезПоследних КАК СрезПоследних ; сначала грузим в памят монстроидальную виртуальную таблицу без всяких условий в ее параметрах, а потом делаем ВНУТРЕННЕЕ соединение с условием соединие на ссылку с этой ВТ Вопрос, на фига фигачить всю виртуалку, любим извращения? |
|||
14
vmv
26.09.12
✎
09:06
|
(10) задержка есть только в голове, железо тут ни причем
|
|||
15
vmv
26.09.12
✎
09:09
|
да и Идексы по соединялкам на ВТ ставить не пробовал, да и шо за манера лепить ВТ из какой-то левой Тз, которая невесть шо в себе содержит, наверняка тонны чуши, бесполезной для задачи.
аж легче стало когда видишь шо мир еще полон воятелей без аболютной веры в мощь своего разума, мдя |
|||
16
Maxus43
26.09.12
✎
09:10
|
И (СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура В (&Вся51Номенклатура))
|
|||
17
Maxus43
26.09.12
✎
09:10
|
(15) :)
|
|||
18
vmv
26.09.12
✎
09:11
|
вот шо ето за бредятина
... ПОМЕСТИТЬ тз ИЗ &СрезПоследних КАК СрезПоследних выворот мозга? надо так .... ПОМЕСТИТЬ ВтСрПс ИЗ &ТзСрПс КАК ТзСрПс нафига надувать в коде! |
|||
19
Maxus43
26.09.12
✎
09:15
|
(18) разница то где?)
|
|||
20
miklenew
26.09.12
✎
09:41
|
Изменил запрос. Теперь по той номенклатуре по которой было 30 минут, теперь 7 минут.
Ну уже что- то. Спасибо за помощь. Мож кто ещё знает как сократить время? ВЫБРАТЬ ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура, ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры КАК СпецификацияНоменклатуры ПОМЕСТИТЬ тз ИЗ РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних ГДЕ ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры.Комментарий ПОДОБНО "%PDM%" ИНДЕКСИРОВАТЬ ПО СпецификацияНоменклатуры ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СпецификацииНоменклатурыИсходныеКомплектующие.Количество, СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения, СпецификацииНоменклатурыИсходныеКомплектующие.ТочкаМаршрута.Подразделение КАК Подразделение, СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Спецификация ПОМЕСТИТЬ Комплектующие ИЗ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие ГДЕ СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &Номенклатура ИНДЕКСИРОВАТЬ ПО Спецификация ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ тз.Номенклатура, тз.СпецификацияНоменклатуры, Комплектующие.Количество, Комплектующие.ЕдиницаИзмерения, Комплектующие.Подразделение ИЗ тз КАК тз ВНУТРЕННЕЕ СОЕДИНЕНИЕ Комплектующие КАК Комплектующие ПО тз.СпецификацияНоменклатуры = Комплектующие.Спецификация |
|||
21
Maxus43
26.09.12
✎
09:43
|
надо избавляться от "Выполняю 51 раз"
|
|||
22
Maxus43
26.09.12
✎
09:44
|
РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних
Где параметры? |
|||
23
Maxus43
26.09.12
✎
09:45
|
Короче в первой Вт ты вытаскиваеш ВСЁ, а тебе ж надо не всё, раз потом отбираеш по конкретной номенклатурине
|
|||
24
miklenew
26.09.12
✎
09:47
|
(22) Какие параметры? Мне ж нужны все активные спецификации с коментарием PDM. Заранее не известно в какой из них будет сидеть нужная мне номенклатура. Она может вообще во всех сидеть.
|
|||
25
vde69
26.09.12
✎
09:48
|
(20) ты, это, закусывай....
нафига темдб юзаешь? временные таблицы делать можно только тогда когда они используются В НЕСКОЛЬКИХ частях.... переделай на вложеные запросы и радуйся... для радости придется вызвать 2-3 раза запрос а потом обновить статистику и так повторить 2-3 раза, тогда оптимизатор скуля запомнит оптимальный план запроса. а у тебя скуль не может оптимизировать, по тому как ты явно времяку создаешь.... |
|||
26
Maxus43
26.09.12
✎
10:00
|
(24) СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &Номенклатура
ну известна же номенклатура? коли известна дак зачем выбирать ВСЁ в первой вт? |
|||
27
Maxus43
26.09.12
✎
10:01
|
ну или первую вт вынести за запрос повторяющийся, чтоб заново эта ВТ не формировалась каждый раз
|
|||
28
miklenew
26.09.12
✎
10:03
|
Спасибо, помогло.
Теперь 27 секунд. Простите мне мою наглость: а ещё чё то можно улучшить? ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.СпецификацияНоменклатуры, ВложенныйЗапрос1.Количество, ВложенныйЗапрос1.ЕдиницаИзмерения, ВложенныйЗапрос1.Подразделение, ВложенныйЗапрос1.Спецификация ИЗ (ВЫБРАТЬ ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры КАК СпецификацияНоменклатуры ИЗ РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних ГДЕ ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры.Комментарий ПОДОБНО "%PDM%") КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество, СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения КАК ЕдиницаИзмерения, СпецификацииНоменклатурыИсходныеКомплектующие.ТочкаМаршрута.Подразделение КАК Подразделение, СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Спецификация ИЗ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие ГДЕ СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &Номенклатура) КАК ВложенныйЗапрос1 ПО ВложенныйЗапрос.СпецификацияНоменклатуры = ВложенныйЗапрос1.Спецификация |
|||
29
vde69
26.09.12
✎
10:10
|
(28)
у тебя виртуальная таблица РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних без условий, попробуй перенести ГДЕ ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры.Комментарий ПОДОБНО "%PDM%" в условие виртуальной таблицы |
|||
30
vde69
26.09.12
✎
10:19
|
(25)+ это называется 1с дала гранату (в смысле временные и таблицы и пакетные запросы) программистам 1с :)
теперь проги их юзают в соответствии с процедурной логикой 1с, а ведь SQL это ФУНКЦИОНАЛЬНЫЙ язык в чистом виде! До меня только сейчас дошло почему 1с ники в подавляющей массе пишут кривые запросы :) |
|||
31
miklenew
26.09.12
✎
10:22
|
(29) Имелось ввиду так?
ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.СпецификацияНоменклатуры, ВложенныйЗапрос1.Количество, ВложенныйЗапрос1.ЕдиницаИзмерения, ВложенныйЗапрос1.Подразделение, ВложенныйЗапрос1.Спецификация ИЗ (ВЫБРАТЬ ОсновныеСпецификацииНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры КАК СпецификацияНоменклатуры ИЗ РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних КАК ОсновныеСпецификацииНоменклатурыСрезПоследних) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество, СпецификацииНоменклатурыИсходныеКомплектующие.ЕдиницаИзмерения КАК ЕдиницаИзмерения, СпецификацииНоменклатурыИсходныеКомплектующие.ТочкаМаршрута.Подразделение КАК Подразделение, СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Спецификация ИЗ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие ГДЕ СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &Номенклатура) КАК ВложенныйЗапрос1 ПО ВложенныйЗапрос.СпецификацияНоменклатуры = ВложенныйЗапрос1.Спецификация И (ВложенныйЗапрос.СпецификацияНоменклатуры.Комментарий ПОДОБНО "%PDM%") |
|||
32
vde69
26.09.12
✎
10:23
|
(31) РегистрСведений.ОсновныеСпецификацииНоменклатуры.СрезПоследних (ВОТ ТУТ ПАРАМЕТРЫ И УСЛОВИЯ ЗАДАЕМ)
|
|||
33
miklenew
26.09.12
✎
10:29
|
(32) Дольше стало - 51 секунду.
|
|||
34
Kyon8
26.09.12
✎
10:33
|
(30) Кстати, на ИТС есть статья, что вложенные запросы лучше на временные таблицы заменять, иначе будет нестабильно время выполнения (статистика устареет - на порядок может скорость упасть).
|
|||
35
vde69
26.09.12
✎
10:37
|
(33) это говорит о том что у тебя много изменений по дате в регистре.
у тебя основные тормоза идут в условии ОсновныеСпецификацииНоменклатурыСрезПоследних.СпецификацияНоменклатуры.Комментарий ПОДОБНО "%PDM%" во первых сам оператор ПОДОБНО не сильно быстрый, а во вторых у тебя две точки (то есть неявный подзапрос), я-бы на твоем месте 1. Ввел реквизит ЕстьPDM (и в обьект и в регист) 2. Разово его заполнил 3. Запрос из (31) стал-бы летать |
|||
36
vde69
26.09.12
✎
10:38
|
(34) апдейт статистики в регламент скуля загнать - религия не позволяет?
|
|||
37
Kyon8
26.09.12
✎
10:44
|
+(34) И СУБД точно знает, сколько строк во временной таблице и может оптимальный план построить, главное индексировать по нужным полям и не пихать лишенее.
Экспериментировал недавно на 1С++, выигрыш значительный от ВТ. Там, правда, тупая SQL2000. (36) скуль админы админят, и не факт что все проблемы решит. |
|||
38
miklenew
26.09.12
✎
10:53
|
(35) Не хочеться изменения в структуре справочника делать.
Лан щас и так пойдёт. Потом подчистим базу и можно будет это условие вообще убирать. Спасибо всем. |
|||
39
vmv
26.09.12
✎
11:29
|
Вложенные проигрывают ВТ если да "главное индексировать по нужным полям и не пихать лишнее", шаманство непосредсвенно с СУБД может обратить этот факт вспять, но это от лукавого
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |