• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Запрос По Справочнику Очень Медленный

  • Автор темы Дайнеко
  • Дата начала
Д

Дайнеко

Нужен запрос по 2-м спр-кам: головной "Товары" и подчиненный "Партии". На базе с 10 тыс ну так уж медленно (минуты 3). Может я чего не оптимально творю? Складывается впечателение, что торомзит подчиненный справочник (долго висит сообщение "Обрабатывается справочник Партии").

Код:
	|Товар	= Справочник.Товары.ТекущийЭлемент, Справочник.Партии.Владелец.ТекущийЭлемент;
|Партия	= Справочник.Партии.ТекущийЭлемент;
|Условие (Товар.П_НеПеч <> 1);
|Условие (Товар.ПринадлежитГруппе(ВыбТовар) = 1);
|Группировка Товар упорядочить по Товар.Наименование;
|Группировка Партия упорядочить по Партия.Код Без Групп;
Еще писал, но на результат совсем не повлияло:
//	ТекстЗапроса = ТекстЗапроса + "Условие (Партия.Владелец.ПринадлежитГруппе(ВыбТовар) = 1);";

Пока Запрос.Группировка("Товар") = 1 Цикл
Пока Запрос.Группировка("Партия") = 1 Тогда

Аналогичный запрос по Регистр.ОстаткиТоваров отрабатывает в момент. Но мне нужны товары, которых и нет в наличии.
 
P

puh14

А база скулевая или ДБФ?

Если убрать Условие (Товар.ПринадлежитГруппе(ВыбТовар) = 1); наколько скорость изменится?

Есть ли битые ссылки на товар?
 
V

vbs

Можно попробовать убрать партии из запроса, а при его обработке перебирать партии для каждого товара
 
U

unknown181538

Или даже попробовать сначала отобрать товары. Черт его знает, во что эта 7.7 превращает запрос.
 
Д

Дайнеко

База dbf. Строк товаров 12тыс. Партий раз в 5-7 больше.
Выполняет запрос на маленькой группе из 10 строк минуты 3. Если без условия, то немного дольше, раза в 2-3
Видно ничего не попрешь.
Вот с уловияем по партиям не могу совладать.
Пишу:
Код:
Вариант 1
|Партия	= Справочник.Партии.ТекущийЭлемент;
|Условие (Партия.Владелец.ПринадлежитГруппе(ВыбТовар) = 1);
Вариант 2
|Партия	= Справочник.Партии.ТекущийЭлемент;
|Владелец	= Справочник.Партии.ТекущийЭлемент.Владелец;
|Условие (Владелец.ПринадлежитГруппе(ВыбТовар) = 1);
Оба раза выдет во время выполения сообщение в диалоге:
"Значение не представляет агрегатный объект (ПринадлежитГруппе)
Раза 3 (может столько групп-родителей у выбранной группы?)

А нужно ли вообще ставить уловие на партии? Если есть условие по товару? Результат вроде одинаковый.
 
P

puh14

Ну без условия - это не маленькая группа, а вообще все записи. Так что наверно побыстрее. Боюсь что проверка на иерархию гробить всё на корню. Как вариант - при выборе группы программно сделать списочек возможных владельцев и в дальнейшем использовать в запросе его.

|Партия = Справочник.Партии.ТекущийЭлемент;
|Владелец = Справочник.Партии.ТекущийЭлемент.Владелец;
|Условие (Владелец.Владелец в СписокГрупп);
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!