|
оптимизация запроса | ☑ | ||
---|---|---|---|---|
0
Domanoff26
13.06.12
✎
14:24
|
есть запрос с временной таблицей, работает чего то не ахти как быстро, хотя строчек кот наплакал
ВЫБРАТЬ ВыбрНоменклатура.Цена КАК Цена, Срез.Цена КАК стараяЦена, ВыбрНоменклатура.Номенклатура, Срез.Валюта ИЗ (ВЫБРАТЬ ВЫБОР КОГДА ЦеныСрезПоследних.Валюта = &Валюта ТОГДА ЦеныСрезПоследних.Цена ИНАЧЕ ВЫРАЗИТЬ(ЦеныСрезПоследних.Цена * КурсыВалютСрезПоследних.Курс КАК ЧИСЛО(15, 2)) КОНЕЦ КАК Цена, ЦеныСрезПоследних.Номенклатура КАК Номенклатура, КурсыВалютСрезПоследних.Валюта КАК Валюта ИЗ РегистрСведений.Цены.СрезПоследних(&дата, Организация = &организация) КАК ЦеныСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, ) КАК КурсыВалютСрезПоследних ПО ЦеныСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта ГДЕ (НЕ ЦеныСрезПоследних.Цена ЕСТЬ NULL ) И ЦеныСрезПоследних.ТипЦен = &ТипЦен) КАК Срез ЛЕВОЕ СОЕДИНЕНИЕ ВыбрНоменклатура КАК ВыбрНоменклатура ПО Срез.Номенклатура = ВыбрНоменклатура.Номенклатура ГДЕ ((Срез.Цена - ВыбрНоменклатура.Цена) * 100 / Срез.Цена > &Проц ИЛИ (Срез.Цена - ВыбрНоменклатура.Цена) * 100 / Срез.Цена < -&Проц) что посоветуете? |
|||
1
Renat11111
13.06.12
✎
14:27
|
А где временная таблица?
|
|||
2
H A D G E H O G s
13.06.12
✎
14:27
|
Тот редкий случай, когда
Размер не имеет значение. |
|||
3
Domanoff26
13.06.12
✎
14:30
|
(1) ВыбрНоменклатура
|
|||
4
Domanoff26
13.06.12
✎
14:30
|
банально забыл про ограничение по номенклатуре
|
|||
5
Domanoff26
13.06.12
✎
14:31
|
в срезе цен
|
|||
6
Renat11111
13.06.12
✎
14:31
|
ГДЕ
(НЕ ЦеныСрезПоследних.Цена ЕСТЬ NULL ) И ЦеныСрезПоследних.ТипЦен = &ТипЦен) КАК Срез В параметры Вирт таблицы, вложеннные запросы переделай на вт, индексируй поля вт, по которым соединяешь. |
|||
7
Renat11111
13.06.12
✎
14:32
|
не по-русски написал ГДЕ
(НЕ ЦеныСрезПоследних.Цена ЕСТЬ NULL ) И ЦеныСрезПоследних.ТипЦен = &ТипЦен) КАК Срез вот это перенеси в параметры виртуальной таблицы |
|||
8
Domanoff26
13.06.12
✎
14:34
|
(6) (7) спасибо
|
|||
9
Нуф-Нуф
13.06.12
✎
14:35
|
сначала получи результат запроса к виртуальной таблице во временную, а потом с ней соединяй.
не рекомендуется выполнять соединение с виртуальными таблицами - сказывается на производительности |
|||
10
Renat11111
13.06.12
✎
14:36
|
(4) думаю это догадаешься тоже сделать в параметрах ВТ )))
|
|||
11
Нуф-Нуф
13.06.12
✎
14:37
|
и меньше используй вложенных таблиц
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |