|
Помогите с оптимизацией. запрос вешается на 30 минут | ☑ | ||
---|---|---|---|---|
0
LehhaK
17.10.12
✎
07:17
|
Собственно, вроде все просто, НО он одну запись ищет 30 минут. Записей - 7000. ЧЯДНТ?! О_о
Запрос: ВЫБРАТЬ ПЕРВЫЕ 1 | ИнформационныеКарты.Наименование, | ИнформационныеКарты.ВладелецКарты, | ИнформационныеКарты.КодКарты, | Контрагенты.бон_ДатаРождения КАК ДатаРождения, | Контрагенты.бон_ПочтовыйАдрес КАК ПочтовыйАдрес, | Контрагенты.бон_Телефон КАК Телефон, | НакоплениеБонусовОстаткиИОбороты.СуммаКонечныйОстаток, | МИНИМУМ(НакоплениеБонусов.Период) КАК Период, | МАКСИМУМ(НакоплениеБонусов.Период) КАК Период1 |ИЗ | Справочник.ИнформационныеКарты КАК ИнформационныеКарты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты | ПО ИнформационныеКарты.ВладелецКарты = Контрагенты.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НакоплениеБонусов.ОстаткиИОбороты КАК НакоплениеБонусовОстаткиИОбороты | ПО ИнформационныеКарты.Ссылка = НакоплениеБонусовОстаткиИОбороты.БонуснаяКарта.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НакоплениеБонусов КАК НакоплениеБонусов | ПО ИнформационныеКарты.Ссылка = НакоплениеБонусов.БонуснаяКарта.Ссылка |ГДЕ | ИнформационныеКарты.ПометкаУдаления = ЛОЖЬ | И ИнформационныеКарты.ЭтоГруппа = ЛОЖЬ | И Контрагенты.ЭтоГруппа = ЛОЖЬ | И Контрагенты.ПометкаУдаления = ЛОЖЬ | И ИнформационныеКарты.ТипКарты = &ТипКарты | И ИнформационныеКарты.ВидДисконтнойКарты = &ВидДисконтнойКарты | |СГРУППИРОВАТЬ ПО | ИнформационныеКарты.Наименование, | ИнформационныеКарты.ВладелецКарты, | ИнформационныеКарты.КодКарты, | Контрагенты.бон_ДатаРождения, | Контрагенты.бон_ПочтовыйАдрес, | Контрагенты.бон_Телефон, | НакоплениеБонусовОстаткиИОбороты.СуммаКонечныйОстаток |
|||
1
Галахад
гуру
17.10.12
✎
07:22
|
Красота, а не запрос.
|
|||
2
LehhaK
17.10.12
✎
07:23
|
(1) как умею :) что не так?
|
|||
3
Галахад
гуру
17.10.12
✎
07:24
|
Задачу опиши.
|
|||
4
LehhaK
17.10.12
✎
07:25
|
(3) Ну, собсна, выбрать все данные по владельцу карты и получить первую и последнюю запись в регистре накопления по данному персонажу
|
|||
5
Armando
17.10.12
✎
07:25
|
НакоплениеБонусов.БонуснаяКарта.Ссылка ???
Пеши НакоплениеБонусов.БонуснаяКарта |
|||
6
LehhaK
17.10.12
✎
07:28
|
(5) Сделал:
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НакоплениеБонусов.ОстаткиИОбороты КАК НакоплениеБонусовОстаткиИОбороты | ПО ИнформационныеКарты.Ссылка = НакоплениеБонусовОстаткиИОбороты.БонуснаяКарта | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НакоплениеБонусов КАК НакоплениеБонусов | ПО ИнформационныеКарты.Ссылка = НакоплениеБонусов.БонуснаяКарта Чем ссылка хуже? |
|||
7
ZanderZ
17.10.12
✎
07:32
|
зачем ОстаткиИОбороты ? сделай сумма
|
|||
8
LehhaK
17.10.12
✎
07:35
|
(7) а зачем его вычислять, если оно есть в готовом виде?
|
|||
9
ZanderZ
17.10.12
✎
07:36
|
(8) затем что от одно соединения избавишься - лишние данные
|
|||
10
LehhaK
17.10.12
✎
07:37
|
(9) Ок. Запилил вот так:
| МИНИМУМ(НакоплениеБонусов.Период) КАК Период, | МАКСИМУМ(НакоплениеБонусов.Период) КАК Период1, | СУММА(НакоплениеБонусов.Сумма) КАК Сумма |ИЗ | Справочник.ИнформационныеКарты КАК ИнформационныеКарты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты | ПО ИнформационныеКарты.ВладелецКарты = Контрагенты.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НакоплениеБонусов КАК НакоплениеБонусов | ПО ИнформационныеКарты.Ссылка = НакоплениеБонусов.БонуснаяКарта |
|||
11
LehhaK
17.10.12
✎
07:38
|
правильно?
|
|||
12
playmaker
17.10.12
✎
07:40
|
А зачем контрагентов присоединяешь? Что мешает сделать "ИнформационныеКарты.ВладелецКарты.бон_ДатаРождения КАК ДатаРождения"?
|
|||
13
ZanderZ
17.10.12
✎
07:41
|
(11) типа того, если нет движения в НакоплениеБонусов нужны данные или нет ?
|
|||
14
LehhaK
17.10.12
✎
07:48
|
(12) Как вы это далаете?!! О_о
(13) нет, не нужны, но ты уже скажи как делать - пригодится))) |
|||
15
playmaker
17.10.12
✎
07:52
|
(14) Что "это"?
Нахрена тебе и информационные карты присоединять? Бери регистр накопления "НакоплениеБонусов" и вытаскивай все оттуда, безо всяких соединений, как в (10). |
|||
16
ZanderZ
17.10.12
✎
07:55
|
(14) ну тогда основная таблица должна быть РегистрНакопления.НакоплениеБонусов
|
|||
17
zak555
17.10.12
✎
07:56
|
> Ну, собсна, выбрать все данные по владельцу карты и получить первую и последнюю запись в регистре накопления по данному персонажу
и что тебе это даст ? |
|||
18
LehhaK
17.10.12
✎
08:06
|
(17) счастье даст
(15),(16) я пошел суициднусь - не расходитесь пока. Как мне теперь отбор по Минимум сделать? |ИМЕЮЩИЕ | МИНИМУМ(НакоплениеБонусов.Период) МЕЖДУ &НачальныйПериод И &КонечныйПериод"; почему то пустую таблицу выдает |
|||
19
Галахад
гуру
17.10.12
✎
08:08
|
Наверное таблица виртуальная и не указана периодичность.
|
|||
20
LehhaK
17.10.12
✎
08:09
|
нет виртуальной таблицы. вот так теперь запрос выглядит: ВЫБРАТЬ
| МИНИМУМ(НакоплениеБонусов.Период) КАК Период, | МАКСИМУМ(НакоплениеБонусов.Период) КАК Период1, | СУММА(НакоплениеБонусов.Сумма) КАК Сумма, | НакоплениеБонусов.БонуснаяКарта.Наименование КАК Наименование, | НакоплениеБонусов.БонуснаяКарта.ВладелецКарты КАК ВладелецКарты, | НакоплениеБонусов.БонуснаяКарта.КодКарты КАК КодКарты |ИЗ | РегистрНакопления.НакоплениеБонусов КАК НакоплениеБонусов | |СГРУППИРОВАТЬ ПО | НакоплениеБонусов.БонуснаяКарта.Наименование, | НакоплениеБонусов.БонуснаяКарта.ВладелецКарты, | НакоплениеБонусов.БонуснаяКарта.КодКарты | |ИМЕЮЩИЕ | МИНИМУМ(НакоплениеБонусов.Период) МЕЖДУ &НачальныйПериод И &КонечныйПериод"; |
|||
21
LehhaK
17.10.12
✎
08:12
|
Все, починил)) всем спасибо, что прокачали мой запрос!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |