![]() |
|
Оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
Alexperumov
03.09.13
✎
09:26
|
Какнить можно оптимизировать этот запрос?
Функция ЗапросСуммы(ДатаНачала1,Номенклатура,Фио) Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала1); Запрос.УстановитьПараметр("ДатаКонца", КонецМесяца(ДатаНачала1)); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("Фио", Фио); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.СпецодеждаВЭксплуатации); Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.СуммаОборотКт, | ХозрасчетныйОстаткиИОбороты.Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2, | ХозрасчетныйОстаткиИОбороты.Субконто3 |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( | &ДатаНачала, | &ДатаКонца, | , | , | Счет = &Счет, | , | Субконто1 = &Номенклатура | И Субконто3 = &Фио) КАК ХозрасчетныйОстаткиИОбороты"; Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сумма = ВыборкаДетальныеЗаписи.СуммаОборотКт; КонецЦикла; Возврат(Сумма); КонецФункции |
|||
1
ДенисЧ
03.09.13
✎
09:27
|
ВЫРАЗИТЬ на субконты наложи.
|
|||
2
golden-pack
03.09.13
✎
09:28
|
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сумма = ВыборкаДетальныеЗаписи.СуммаОборотКт; КонецЦикла; Возврат(Сумма); |
|||
3
Maxus43
03.09.13
✎
09:28
|
ускорения не даст имхо
|
|||
4
Maxus43
03.09.13
✎
09:29
|
а смысл цикла? возвратить одну последнюю сумму?
|
|||
5
MSOliver
03.09.13
✎
09:29
|
использовать таблицу оборотов, вид субконто - ускорит
|
|||
6
golden-pack
03.09.13
✎
09:31
|
(3) даст
|
|||
7
MSOliver
03.09.13
✎
09:31
|
вернёт только последнюю сумму по второму субконто (если оно заполнено)
|
|||
8
Нуф-Нуф
03.09.13
✎
09:32
|
поидее нет второго субконта - значит не использует индекс
|
|||
9
Нуф-Нуф
03.09.13
✎
09:32
|
нет в отборах
|
|||
10
MSOliver
03.09.13
✎
09:34
|
Я вот не уверен что если Выразить на субконто наложить что это
ускорит... а к чему приводить? |
|||
11
Alexperumov
03.09.13
✎
09:34
|
Спасибо, сейчас проверю насчет субконто и оборотов.. Не понял как выразить поможет
|
|||
12
Maxus43
03.09.13
✎
09:37
|
(11) цикл зачем? ты только одну сумму возвращаешь, а собирает их запрос - все. Логику меняй, доставая только одну запись запросом
|
|||
13
Maxus43
03.09.13
✎
09:38
|
(12) всмысле возвращает все записи в разрезе 2-го субконто, если оно разное
|
|||
14
KuAl
03.09.13
✎
09:40
|
если счет один, вырази субконто, быстрее точно будет
про обороты правильно сказали |
|||
15
mzelensky
03.09.13
✎
09:45
|
(10) исходя из чего ты в этом не уверен?
|
|||
16
Fragster
модератор
03.09.13
✎
09:46
|
(15) исходя из того, что обращения через точку нету, а в 8.2 Выразить() к тому же и индекс не дает использовать
|
|||
17
Maxus43
03.09.13
✎
09:50
|
выразить никогда не давало ускорения при выборке.
При сравнении, получении реквизитов поля и т.д. это делать нужно, но никак не при выборке обычной. Например Выразить в Соединении - наоборот убъёт скорость, а не добавит |
|||
18
Alexperumov
03.09.13
✎
10:01
|
убрал цикл и заменил таблицу стало быстрее на 20%..
|
|||
19
Maxus43
03.09.13
✎
10:11
|
(18) 2-е субконто зачем в выборке тебе? если условие на него не ставится?
|
|||
20
Sabbath
03.09.13
✎
10:27
|
(0)(19) Вообще зачем вытаскивать все, когда нужна только сумма
|
|||
21
Sabbath
03.09.13
✎
10:29
|
Ну и ВЫРАЗИТЬ можно попробовать... Кстати интересно, ФИО это текст ФИО или или все-таки ссылка
|
|||
22
Alexperumov
03.09.13
✎
10:30
|
(21) да спс убрал, Ссылка на ФизЛицо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |