|
оптимизация запроса |
☑ |
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
|
и меньше используй вложенных таблиц
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой