![]() |
![]() |
![]() |
|
Ускорение работы запроса | ☑ | ||
---|---|---|---|---|
0
ParinovS
22.05.12
✎
22:03
|
Доброго времени суток!)
Дано: УТ 10.3 , Регистр накопления "ТоварыОрганизаций" Задача: Выбрать записи, где регистратор: либо "РТиУ" либо "ВозвратТоваровОтПокупателя" с максимальной скоростью. Знаю, что условие вешать через "ГДЕ" не есть очень хорошо, надо устанавливать отборы в параметрах виртуальной таблицы, но там нет такого поля, как регистратор! Вопрос: Как ограничить выборку по типу регистратора с максимальной скоростью работы запроса? |
|||
1
ParinovS
22.05.12
✎
22:12
|
up)
|
|||
2
ParinovS
22.05.12
✎
22:15
|
Ну киньте хоть мысль за что зацепиться то? Или делать только через ГДЕ?
|
|||
3
Asmody
22.05.12
✎
22:17
|
[Задача: Выбрать записи] — какая, в пень, "виртуальная таблица"?
|
|||
4
GROOVY
22.05.12
✎
22:18
|
(3) Остатки! Это же очевидно!
|
|||
5
ParinovS
22.05.12
✎
22:27
|
Asmody, поясняю другим языком специально для тебя: Конструктор запроса - > Вкладка "Таблицы и Поля" - > Центральное поле -> Если туда(в центральное поле) перетянуть табличку "РегистрыСведений.ТоварыОрганизаций.Обороты" то в центральном поле, если установить на эту табличку курсор и кликнуть по кнопочке в виде таблички с гаечным ключиком - откроются "Параметры виртуальной таблицы".
|
|||
6
GROOVY
22.05.12
✎
22:31
|
(5) Записи <> Обороты.
|
|||
7
GROOVY
22.05.12
✎
22:32
|
Хм... РегистрыСведений и обороты?
|
|||
8
ZyXEL
22.05.12
✎
22:33
|
(0) огласи список рассматриваемых придуманых тобой вариантов реализации...
|
|||
9
МихаилМ
22.05.12
✎
22:33
|
(5)
не нужна вирт таб "обороты" причем здесь сведений когда остатки |
|||
10
ParinovS
22.05.12
✎
22:36
|
Сорри))) Хотел сказать "РегистрСведений"
|
|||
11
ParinovS
22.05.12
✎
22:37
|
фу ты) Вот привязалось то... РЕГИСТР НАКОПЛЕНИЯ!)))
|
|||
12
ParinovS
22.05.12
✎
22:38
|
Почему никто внимания не обращает на первый пост?
|
|||
13
DrShad
22.05.12
✎
22:39
|
потому что все твои посты бред
|
|||
14
ParinovS
22.05.12
✎
22:40
|
DrShad, поясни мне пожалуйста что я бредового спросил?)
|
|||
15
dangerouscoder
22.05.12
✎
22:41
|
(0) по периоду не отбираем ? а если уже лет 5 работаем будет очень быстро..
|
|||
16
DrShad
22.05.12
✎
22:41
|
[Знаю, что условие вешать через "ГДЕ" не есть очень хорошо, надо устанавливать отборы в параметрах виртуальной таблицы, но там нет такого поля, как регистратор!
Вопрос: Как ограничить выборку по типу регистратора с максимальной скоростью работы запроса?] проверить на РТиУ или возврат можно только в ГДЕ |
|||
17
GROOVY
22.05.12
✎
22:43
|
Может проще тупо документы тогда уж выбрать из таблиц документов?
|
|||
18
DrShad
22.05.12
✎
22:45
|
(17) Паша, как ты можешь такое советовать!?
|
|||
19
МихаилМ
22.05.12
✎
22:46
|
+(17)
я тоже за документы |
|||
20
ParinovS
22.05.12
✎
22:47
|
Почему нельзя просто сказать "Других вариантов, как через "ГДЕ" нет", либо "Да, есть такой то вариант", или хотя бы просто сказать, что "можно"(Я сам попробую отыскать) если непонятно - написать, чтобы я точнее изложить проблему! Нет. надо троллить! Издеваться! Я же не прошу за меня все сделать! Мне просто хочется узнать, как лучше сделать.
|
|||
21
ZyXEL
22.05.12
✎
22:47
|
(20) я вот спросил как еще у тебя варианты... толку 0...
|
|||
22
DrShad
22.05.12
✎
22:47
|
(20) в (5) ты сам начал, так что сорри
|
|||
23
experimentator76
22.05.12
✎
22:48
|
дэжавю чоле ?
|
|||
24
DrShad
22.05.12
✎
22:48
|
+(22) или ты знаком с Asmody лично?
|
|||
25
experimentator76
22.05.12
✎
22:48
|
это ктото когда то уже оптимизировал
|
|||
26
GROOVY
22.05.12
✎
22:48
|
(20) Можно, через таблицу обороты. В таблице надо установить периодичность "Регистратор", но тогда ты не записи получишь а именно обороты. И уже осле этого можно отбор сделать на ссылку. Но по скорости ты нифига не выиграешь, а скорее наоборот.
|
|||
27
GROOVY
22.05.12
✎
22:49
|
(18) Мы же задачу не знаем... Каноны я не нарушаю... ;)
|
|||
28
DrShad
22.05.12
✎
22:50
|
(27) т.е. запрос к документам кошерно, если задачу не знаешь?
|
|||
29
GROOVY
22.05.12
✎
22:51
|
(28) Выбрать все непроведенные документы. Кошерно! :)
|
|||
30
GROOVY
22.05.12
✎
22:52
|
Судя по постам ТС он точно что то через зад пытается сделать...
|
|||
31
DrShad
22.05.12
✎
22:52
|
(29) ну разве что для этого, но я бы казнил ректально за непроведенные документы в БД
|
|||
32
DrShad
22.05.12
✎
22:53
|
+(31) я почти угадал :)
|
|||
33
zak555
22.05.12
✎
22:53
|
(0) запрос к вирутальной таблице оборотов с ukRJ
|
|||
34
zak555
22.05.12
✎
22:53
|
* гдКО
|
|||
35
DrShad
22.05.12
✎
22:55
|
(33),(34) че?
|
|||
36
zak555
22.05.12
✎
22:55
|
(35) там что у регистра нет "вида движения" ?
|
|||
37
DrShad
22.05.12
✎
22:57
|
(36) а разве расход только по РТиУ или Возврат? а как же списание или еще какая хрень?
|
|||
38
zak555
22.05.12
✎
22:58
|
(37) код операации тебе о чём-нибудь говорит ?
|
|||
39
DrShad
22.05.12
✎
22:59
|
(38) сделай отбор по коду операциине в ГДЕ!
|
|||
40
DrShad
22.05.12
✎
22:59
|
+(39) это реквизит регистра
|
|||
41
zak555
22.05.12
✎
23:01
|
сделал, дальше что ? =)
|
|||
42
GROOVY
22.05.12
✎
23:02
|
Сфотографируйся на фоне ковра!
|
|||
43
zak555
22.05.12
✎
23:03
|
ни у кого нет ковар случаем ?
|
|||
44
DrShad
22.05.12
✎
23:09
|
(41) скрин в студию
|
|||
45
zak555
22.05.12
✎
23:14
|
(44) ковара нету (!)
|
|||
46
ParinovS
22.05.12
✎
23:23
|
Почитал все выше написанное, смирился со своей ничтожностью, а теперь задача(переосмысленный вариант):
Необходимо выбрать "данные" о "Реализации" и "Возврате" товара за определенный период. Я решил, использовать для этой цели "РегистрНакопления.ТоварыОрганизаций", т.к. необходимым полем в выборке "Данных" является "серия номенклатуры". По этой причине я отказался от "РегистрНакопления.Продажи". Первички в день создается очень большое количество. Выборку будут делать за квартал, и скорее всего очень часто. Вопрос стоит в оптимизации скорости выполнения запроса. Как стоит организовать запрос? |
|||
47
ILM
гуру
22.05.12
✎
23:27
|
сколько?
|
|||
48
Feanor
22.05.12
✎
23:29
|
(46) выбирай из физических таблиц, будь быдлокодером, блеа!
З.Ы. без серий совсем не обойтись? |
|||
49
ParinovS
22.05.12
✎
23:29
|
что столько?
|
|||
50
ParinovS
22.05.12
✎
23:29
|
Без серий вообще никак...
|
|||
51
zak555
22.05.12
✎
23:31
|
(46) распиши подробнее
может своит твои "итоги" в отдельный регистр запихнуть =) |
|||
52
Mashinist
22.05.12
✎
23:31
|
"Выборку будут делать за квартал, и скорее всего очень часто."
Может стоит подумать на тему агрегатирования? |
|||
53
ILM
гуру
22.05.12
✎
23:32
|
денег сколько?
|
|||
54
ILM
гуру
22.05.12
✎
23:34
|
Нужен товар который возвращали за квартал. Хочешь показать признак в списке товара. Поэтому выбирать будешь часто. Так?
|
|||
55
ParinovS
22.05.12
✎
23:35
|
Забыл сказать конфигурацию трогать нельзя, суть в том, что это надо для отчета, отчет просто будут делать за квартал, "переформировывать" будут часто (ну а что поделаешь - будут и все, ответа на вопрос "Почему?" - я не знаю)
|
|||
56
МихаилМ
22.05.12
✎
23:36
|
очент большое колво первички это сколько 100...1000...10 000 доков день ?
в эксплуатации бд есть главное правило :" подальше положешь - поближе возьмешь" так что просто создайте покрывающий индекс по полям отбора(либо симитируйте его на РС). но не забывайте, что для оперативного контура требуется соблюдать правило размер индексов / размер данных 1/1 либо создайте агрегат и пересчитывайте. также оптимальность запроса зависит от типа субд, дисковой системы ниличия индексов. |
|||
57
Ksandr
22.05.12
✎
23:42
|
сделать РН + подписку не предлагать?
|
|||
58
ILM
гуру
22.05.12
✎
23:44
|
Бесплатно, делай сам.
|
|||
59
Asmody
22.05.12
✎
23:45
|
(20) никто не издевался. исходя из поставленной тобой задачи "выбрать записи регистра", я тебе сказал, что про виртуальные таблицы можно забыть. это если исходить из (0).
а если исходить из (46), то если тебе так нужны серии, рекомендую найти регистр с измерением по сериям, либо создать таковой |
|||
60
Asmody
22.05.12
✎
23:47
|
(55) [конфигурацию трогать нельзя] — это миф
|
|||
61
ParinovS
22.05.12
✎
23:50
|
ну если брать доки реализация и возврат - то около 300 документов в день, для меня это "очень много" :) База работает под СУБД MS SQL. Я так думаю СУБД же как то индексирует свои таблицы? А если сделать все, как я и хочу "РегистрСведений.ТоварыОрганизаций" и отбор через ГДЕ на тип регистратора. При таком исполнении все данные, которые мне нужны я выбираю (база в файловом режиме сейчас - размер 9.6 Гб, данные за месяц выбираются порядка 15-20 секунд, бывает минуту думает, проц i3, 3 ГБ ОЗУ). Данные нужно выбирать за прошлые периоды. конфу трогать нельзя - это требование :) На скуле думаю быстрее будет, но вот мне интересно, исходя из опыта: Насколько это кривой запрос?
|
|||
62
МихаилМ
22.05.12
✎
23:50
|
(55)
можно держать ВременнуюТаблицу и её обновлять ориентируясь на ГП |
|||
63
МихаилМ
22.05.12
✎
23:55
|
(61)
бессмысленно сравнивать скорость запроса в файловом и серверном варианте. ну похвастайтесь текстом запроса. Смешно, что Вас еще уупрашивать нужно. |
|||
64
МихаилМ
22.05.12
✎
23:59
|
+(63)
запрос можно считать "кривым" если в нем есть fullscan к таблице больше 10 000 записей. в остальных случаях запрос не "кривой" |
|||
65
ParinovS
23.05.12
✎
00:05
|
ну вот что-то вроде этого выходит. Нужно еще конечно кучу полей. но их я буду через регистратор выдергивать.
ВЫБРАТЬ ТоварыОрганизацийОбороты.Организация, ТоварыОрганизацийОбороты.Номенклатура, ТоварыОрганизацийОбороты.ХарактеристикаНоменклатуры, ТоварыОрганизацийОбороты.СерияНоменклатуры, ТоварыОрганизацийОбороты.КоличествоОборот, ТоварыОрганизацийОбороты.КоличествоПриход, ТоварыОрганизацийОбороты.КоличествоРасход, ТоварыОрганизацийОбороты.Номенклатура.ВидАлкоголя, ТоварыОрганизацийОбороты.Номенклатура.ВидАлкоголя.Код, ТоварыОрганизацийОбороты.Регистратор ИЗ РегистрНакопления.ТоварыОрганизаций.Обороты( &НачалоПериода, &КонецПериода, Регистратор, Организация = &Организация И (НЕ Номенклатура.ВидАлкоголя.Ссылка ЕСТЬ NULL )) КАК ТоварыОрганизацийОбороты ГДЕ (ТоварыОрганизацийОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ИЛИ ТоварыОрганизацийОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя) |
|||
66
DrShad
23.05.12
✎
00:09
|
очень странный запрос...
|
|||
67
DrShad
23.05.12
✎
00:10
|
+(66) сам по себе никакой полезной инфы не несет
|
|||
68
DrShad
23.05.12
✎
00:10
|
может скажешь нормально что и для чего нужно выбрать и в какой конфе?
|
|||
69
ParinovS
23.05.12
✎
00:13
|
(67) почему? Буду делать группировки и по контрагенту смотреть, сколько купил и сколько вернул. Ну и плюс нужны всякие данные о производителе, серии номенклатуры, о контрагенте. Конфа УТ 10.3.
|
|||
70
DrShad
23.05.12
✎
00:14
|
может это все таки разные варианты отчета, а не один?
|
|||
71
ParinovS
23.05.12
✎
00:16
|
(70), ну я говорю об одном варианте :) Так что? какой вердикт по быстродействию запроса?)
|
|||
72
МихаилМ
23.05.12
✎
00:20
|
зря Вы пытаетесь додумывать, что важно - что не важно
приведите весь текст запроса. тогда будет предмет для обсуждения. пока вижу лишний left join в НЕ Номенклатура.ВидАлкоголя.Ссылка ЕСТЬ NULL опять же может оказаться эфективным разыменование ссылок в запросе т.е. добалвение представления. а это оптимизация уже зависит от версии 1с82 (< 14 или >= ) повторяю пока нет работающего запроса - не повода для отимизации. |
|||
73
DrShad
23.05.12
✎
00:20
|
да тебе уже давно сказали, что кроме как в ГДЕ нигде не проверишь на ССЫЛКА
|
|||
74
МихаилМ
23.05.12
✎
00:22
|
(73)
можно еще с таблицами докуметов соединять. собственоо так в 80 делали. |
|||
75
ParinovS
23.05.12
✎
00:24
|
Ладно, SrShad, МихаилМ, спасибо за консультацию. Буду допиливать запрос. Тестировать. Если скорость работы устроит - оставлю, не устроит - буду дальше думать.
|
|||
76
DrShad
23.05.12
✎
00:27
|
(75) так меня еще не обзывали :)
|
|||
77
ParinovS
23.05.12
✎
00:30
|
(76), ночь на дворе) А букавки "D" и "S" рядышком ) Сорри))
|
|||
78
timurhv
23.05.12
✎
00:53
|
(65) У тебя в запросе тормозить больше будет вот это:
"ТоварыОрганизацийОбороты.Номенклатура.ВидАлкоголя.Код", а не то что ты хочешь оптимизировать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |