Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос к пустой таблице. Медленное выполнение.  [new]
kapaka1978
Guest
Если 1С 8.1 на Microsoft SQL Server 2005, срадствами 1С, очистил регистр "ЗаказыПокупателей" в SQL это две таблицы _AccumReg4427 и _AccumRegTotals4443. Запрос в SQL SELECT count(*) from _AccumReg4427 показывает 0 записей, соответственно SELECT count(*) from _AccumRegTotals4443 тоже 0 записей.

Теперь запрос который использует эту таблицу, создается автоматически сервером 1С.

Выполняется 26 секунд, причем основное время приходится на сканирование пустой таблицы

Сам запрос

+
SELECT
ISNULL(#V8TblAli1_Q_000_T_001._Fld4441Balance, CAST(0 AS NUMERIC(1,0))) AS f_1
FROM
(
SELECT
#V8TblAli1_T._Fld4428RRef AS _Fld4428RRef,
CAST(SUM(#V8TblAli1_T._Fld4441Balance) AS NUMERIC(32,2)) AS _Fld4441Balance
FROM
(
SELECT
_AccumRegTotals4443._Fld4428RRef AS _Fld4428RRef,
CAST(SUM(_AccumRegTotals4443._Fld4441) AS NUMERIC(27,2)) AS _Fld4441Balance
FROM
_AccumRegTotals4443 WITH(SERIALIZABLE)
WHERE
_AccumRegTotals4443._Period = {ts '3999-11-01 00:00:00'} AND _AccumRegTotals4443._Fld4428RRef = 0x93EA003005CCB34D11DFD0429B179D7D
GROUP BY
_AccumRegTotals4443._Fld4428RRef
HAVING
CAST(SUM(_AccumRegTotals4443._Fld4441) AS NUMERIC(27,2)) <> CAST(0 AS NUMERIC(1,0))
UNION ALL
SELECT
_AccumReg4427._Fld4428RRef AS _Fld4428RRef,
CAST(CAST(SUM(CASE
WHEN _AccumReg4427._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN - _AccumReg4427._Fld4441
ELSE _AccumReg4427._Fld4441
END) AS NUMERIC(21,2)) AS NUMERIC(28,2)) AS _Fld4441Balance
FROM
_AccumReg4427 WITH(SERIALIZABLE)
WHERE
_AccumReg4427._Period > {ts '2011-11-21 23:59:59'} AND _AccumReg4427._Period < {ts '3999-11-01 00:00:00'} AND _AccumReg4427._Active = 0x01 AND _AccumReg4427._Fld4428RRef = 0x93EA003005CCB34D11DFD0429B179D7D
GROUP BY
_AccumReg4427._Fld4428RRef
HAVING
CAST(SUM(CASE
WHEN _AccumReg4427._RecordKind = CAST(0 AS NUMERIC(1,0))
THEN - _AccumReg4427._Fld4441
ELSE _AccumReg4427._Fld4441
END) AS NUMERIC(21,2)) <> CAST(0 AS NUMERIC(1,0))
) #V8TblAli1_T
GROUP BY
#V8TblAli1_T._Fld4428RRef
HAVING
CAST(SUM(#V8TblAli1_T._Fld4441Balance) AS NUMERIC(32,2)) <> CAST(0 AS NUMERIC(1,0))
) #V8TblAli1_Q_000_T_001
WHERE
#V8TblAli1_Q_000_T_001._Fld4428RRef = 0x93EA003005CCB34D11DFD0429B179D7D


План выполнения в приложенном файле (сори что картинка, не знаю как сохранять план запроса в текстовом виде).

Реиндексацию и обновление статистики делал.

Почему так так долго выполняется, там же нет ни чего. Помогите плиз кто сталкивался.

К сообщению приложен файл. Размер - 105Kb
28 ноя 11, 15:35    [11671819]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к пустой таблице. Медленное выполнение.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Стоимость в плане выполнения - это не время выполнения.

Сообщение было отредактировано: 28 ноя 11, 15:49
28 ноя 11, 15:49    [11671995]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к пустой таблице. Медленное выполнение.  [new]
Glory
Member

Откуда:
Сообщений: 104751
kapaka1978
соответственно SELECT count(*) from _AccumRegTotals4443 тоже 0 записей.


А стрелка от _AccumRegTotals4443 в плане показывает что там далеко не 0 записей
Как вы это объясните ?
28 ноя 11, 15:52    [11672037]     Ответить | Цитировать Сообщить модератору
 Re: Запрос к пустой таблице. Медленное выполнение.  [new]
kapaka1978
Guest
Гавриленко Сергей Алексеевич
Стоимость в плане выполнения - это не время выполнения.


Тогда подскажите пожалуйста где смотреть именно время выполнения.
28 ноя 11, 15:52    [11672040]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить