Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка "Построенный запрос к СУБД использует слишком много таблиц"  (Прочитано 3594 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Marta_Li
Постоялец

by
Offline Offline

« : 03-12-2012 08:08 » 

В ПланВидовХарактеристик ВидыСубконтоХозрасчетные добавила в типЗначенияХарактеристик и, соответственно, выбрала в тип ВидаХарактеристик новый документ. После этого, похоже, стало вылетать на ошибку при проведении. Когда убираю в запросе " Субконто2.Дата >= &ДатаНачалаПартий" проходит, но это условие мне нужно. Может, подскажет кто, от какой печки отталкиваться?
Запрос и ошибку привожу ниже.
Заранее спасибо за участие.

Код:
ВЫБРАТЬ
Остатки.Счет КАК СчетУчета,
Остатки.Субконто1 КАК Номенклатура,
Остатки.Субконто2.Дата КАК ДокументОприходованияДата,
Остатки.Субконто2 КАК ДокументОприходования,
&ПустаяДата КАК ДокументОтгрузкиДата,
&ПустаяОтгрузка КАК ДокументОтгрузки,
Остатки.Субконто3 КАК Склад,
Остатки.Организация КАК Организация,
СУММА(ВЫБОР КОГДА Остатки.КоличествоОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.КоличествоОстатокДт КОНЕЦ) КАК Количество,
СУММА(ВЫБОР КОГДА Остатки.СуммаОстатокДт ЕСТЬ NULL ТОГДА 0 ИНАЧЕ Остатки.СуммаОстатокДт КОНЕЦ) КАК Стоимость
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&МоментКон, Счет В (&СчетаУчетаНСП), ,Субконто1 В (&Номенклатура) И Субконто2.Дата >= &ДатаНачалаПартий И Субконто3 В (&Склады) И Организация В (&Организации)) КАК Остатки

СГРУППИРОВАТЬ ПО
Остатки.Счет,
Остатки.Субконто1,
Остатки.Субконто2.Дата,
Остатки.Субконто2,
Остатки.Субконто3,
Остатки.Организация
УПОРЯДОЧИТЬ ПО Номенклатура, ДокументОприходованияДата Убыв
ИТОГИ ПО Номенклатура

Ошибка:


Uploaded with ImageShack.us
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 03-12-2012 10:17 » 

Видимо слишком сложное получается построение виртуальной таблицы Остатки со всеми условиями.
Попробуй перенести условие "Субконто2.Дата >= &ДатаНачалаПартий" из условий виртуальной таблицы в блок "ГДЕ ..." запроса.
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #2 : 03-12-2012 10:41 » 

Да, спасибо, я уже пробовала - проходит. Просто это общая функция, участвующая во многих местах по партионному учету, вынеся за пределы (как внешнее условие), думаю, будет медленней работать запрос.
Причем, что интересно, проходит и тогда, когда оставляю все условия внутри виртуальной таблицы, но убираю вывод поля Субконто2.Дата (соответственно в группировке, в сортировке). как это понимать?
И получается, что когда пишу внутри вирт.таблицы "Субконто2.Дата", подтягиваются таблицы в двойном размере из-за этого ".Дата"? И хотя я указываю ВидыСубконто (там это Номенклатура, партии, Склады), все-равно захватываются все документы из всех ВидовСубконто что ли, раз пишет, что не достаточно?
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 03-12-2012 10:48 » 

Разобраться почему - это сложно: нужно включать логи и смотреть как же именно строится запрос.
Скорость скорее всего снизится, если вынести условие в ГДЕ, но не обязательно: смотря насколько сложный получается запрос (тот, который уже в MS SQL).
Вполне возможно что одна и та же таблица используется дважды в запросе: в остатках и в результате.
Не исключено, что система пытается связать остатки со всеми возможными типами Субконто2 (а думаю их много)
Еще из простых методов решения:
1. Проверь чтобы использовалась максимально возможная версия платформы - построение запросов периодически оптимизируют
2. Сделай предварительный запрос по Субконто2 с условием по дате и используй полученный список результатов в остатках - это должно снизить количество таблиц.
Записан
Marta_Li
Постоялец

by
Offline Offline

« Ответ #4 : 03-12-2012 10:53 » 

Спасибо. Этот запрос (текст запроса) в общей процедуре строится по очень громоздкой схеме, с кучей условий. Поэтому буду пробовать просто вынести условие во внешнее (ГДЕ...), а там посмотрю на реакцию пользователей...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines