Есть не типовой регистр ОстаткиТоваровПоставщиков. Периодический в пределах секунды, независимый. Измерения: Номенклатура (Справочник.НоменклатураПоставщика), Поставщик (Справочник.Партнер), Склад поставщика (не типовой Справочник.СкладыПоставщиков); Ресурсы: Остаток (Число); Реквизиты: ОстатокАктуален (Булево).

Количество записей в регистре превышает 200000. В последствии будет больше.

Конфигурация УТ 11.4.6.230, платформа 8.3.16.1224, MS SQL.

Требуется сделать простейший срез последних на заданную дату:

```1c
    ВЫБРАТЬ ПЕРВЫЕ 100
    ОстаткиТоваровПоставщиков.Номенклатура КАК Номенклатура,
    ОстаткиТоваровПоставщиков.Поставщик КАК Поставщик,
    ОстаткиТоваровПоставщиков.СкладПоставщика КАК СкладПоставщика,
    ОстаткиТоваровПоставщиков.Остаток КАК Остаток,
    ОстаткиТоваровПоставщиков.ОстатокАктуален КАК ОстатокАктуален
    ИЗ
    РегистрСведений.ОстаткиТоваровПоставщиков.СрезПоследних(&ДатаСреза, ) КАК ОстаткиТоваровПоставщиков
    УПОРЯДОЧИТЬ ПО
    Период УБЫВ
```

Запрос отрабатывается более 5 минут.

Перепробовал все, включая различные комбинации индексов для измерений. Результат нулевой. Впервые сталкиваюсь с такой проблемой. Аналогичный регистр (только с регистратором) ЦеныНоменклатуры отрабатывается влёт.

Убедительная просьба, не задавайте мне вопросов "Зачем мне это надо?" - ответ мне это нужно и точка. И не поучайте "попробовать другую платформу" - пробовал, в т.ч. 8.3.15
---
Итоги разрешены для регистра ?
---
не уверен на 100%, но припоминается что в виртуальных таблицах ( типа срез последних) можно работать только с измерениями и ресурсами, а реквизиты доступны только у полной таблицы регистра... попробуйте убрать

```1c
    ОстаткиТоваровПоставщиков.ОстатокАктуален КАК ОстатокАктуален
```

измениться ли скорость ?
---
Спасибо за совет. Вечером попробую и отпишусь.
---
Не помогло. Тот же результат. Остается одно перенести ресурс в реквизит.... Не айс, конечно
---
Интересно, почему регистр сведений, а не накопления?
---
Интересно, почему регистр сведений, а не накопления?
Наверное потому что это остатки поставщика.
---
Совершенно верно! Кто работал с торговлей мимо склада (да и не только) уже сталкивался с тонкостями учета остатков у поставщика
---
вот это УПОРЯДОЧИТЬ ПО
    Период УБЫВ в данном случае зачем ?
---
Потому что мне так надо. Попросил же не флудить!
---
Если убрать ПЕРВЫЕ 100 и УПОРЯДОЧИТЬ ПО Период УБЫВ как изменится время выполнения запроса?
---
Дорогие мои, не флудите! Я работаю с 1С начиная с версии 7.5 (не 7.7!!!). Это почти 30 лет. Неужели я не попробовал ВСЕ случаи и варианты, прежде чем обратился за помощью?! Очень прошу, не флудите!!!!
---
Неужели я не попробовал ВСЕ случаи и варианты, прежде чем обратился за помощью?! Очень прошу, не флудите!!!!
По-вашему те, кто хочет вам помочь, об этом знает на телепатическом уровне?

Если выборка без доп. условий отрабатывает еще дольше, у вас часом версионный режим работы для БД не включен в MSSQL?
Фрагментация индексов таблицы насколько сильная?
---
Я объяснил выше. Не надо задавать вопросов не по существу. Когда (10) дает реальный совет, я его услышу. А вопросы типа "а ты выводил на экран или делал выборку?" задавайте на "Мисте". Там любят такие вопросы. Я в самом начале сказал, что ПОРОБОВАЛ ВСЁ ЧТо ВЫ МОЖЕТЕ ПРЕДЛОЖИТЬ (индексы, сортировки и пр.). А ВЫБРАТЬ ПЕРВЫЕ 100 И УПОРЯДОЧИТЬ ПО.... мне просто нужны и это не обсуждается.
---
Версионный режим не используется. Обычный режим перезаписи (не помню как он по-научному называется)
---
исходя из ответа, чую, что мы о разном.

я про READ_COMMITTED_SNAPSHOT ON в свойствах БД MSSQL.
---
А, тогда о разном. Если говорить об уровне изолирования транзакций (где здесь версионирование, мне непонятно), то речь идет о тупом чтение данных и вероятность записи данных в этот момент практически нулевая. Не думаю, что здесь проблема
---
При READ_COMMITTED_SNAPSHOT ON MSSQL для транзакций предоставляет копию данных = версионирование.

Вроде как СрезПоследних в случае версионника (ORACLE/Postgres/etc) тупит как не в себя.
Поэтому используют соединение таблиц саму с собой.

Ну если дело не в этом, то и проверять не стОит.
---
Это происходит только в тот момент, когда параллельно происходит запись. Сделано для того, что запрос на чтение видел данные которые обработаны в запросе на запись, но еще находятся в трансакции и не "легли" в базу. Это про рид комитед.

Что касается версионирования, то для ms их 4. 1) только первичная запись без возможности последующего изменения, 2) запись и последующее изменение без хранения истории, 3 и 4) варианты версионирования. Что касается всего, что не ms, понятия не имею
---
Фрагментация индексов таблицы
Ночью делал REINDEX.... Тоже смотрел в сторону sql... Не-а, три нуля
---
Еще попробуйте без "ПЕРВЫЕ 100", просто для интереса.
---
Полная выборка целую вечность отрабатывается. А вот разницы между ПЕРВЫЕ 100 и ПЕРВЫЕ 500 никакой
---
Что ж, было предположение про такой случай https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9c89d05f-d730-4f75-a648-e3e43e60d7c9/select-top-n-killing-query-performance?forum=transactsql
Кроме флуда, я бы проверил влияние RLS, если есть. Соответственно посмотреть результаты в привелигированном режиме (через внешнюю обработку Файл - Открыть не получиться).
---
рлс нет, привелигированный режим - три нуля. А еще делал "искусственное" выделение максимальной даты путем группировки. Еще что?
---
как получены 5 минут? Именно Запрос.Выполнить() выполняется 5 минут или же это вывод на экран?
---
НЕ ФЛУДИ!!!!
---
что-то вы нервный больно. Так долго с 1С работали, что разучились вежливо разговаривать с людьми, которые пытаются вам помочь?
---
Посмотри через профайлер план запроса и сделай индекс подходящий. Может индекс необходимо реорганизовать из-за высокой фрагментации. Сортировка тяжёлая операция, но у тебя она по периоду, а по нему индекс по сути отсортирован.
---
Предполагается, что для периодического реквизита "Период" поле таблицы индексирована и отсортирована
---
Итоги разрешены для регистра ?
---
Нет
---
В конечном итоге, это оказалось решением! Спасибо всем за участие!
---
Рад был помочь )
---
какой по итогу прирост получился по скорости?
---
сек 30 вместо 5 минут.... Но БД еще не оптимизирована и не реиндексирована. Итог расскажу при переходе на боевую, через пару тройку дней
---
Итоги для регистра сведений? это как работает? в качестве ликбеза
---
https://its.1c.ru/db/v8std/content/708/hdoc
---
спасибо. интересно.
---
Запрос элементарный да объёмы не те чтобы 5 минут выполнял я, полюбому проблема в обслуживании БД.
---
Резюме?
---
Итак, "А" было вами сказано. Пора говорить "Б": что по-пунктно надо сделать? И что из этих пунктов такого, что я еще не попробовал?
---
Вы можете получить план этого запроса ? Если нет, то получите его, воспользовавшись данной инструкцией https://xn----1-bedvffifm4g.xn--p1ai/articles/%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2-%D1%81-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E-sql-profiler/. После кидайте сюда полученный вами результат.
---
Запрос далеко не такой, как я спросил здесь. Сейчас я реструктуризирую базу, а это на полночи. Отметьтесь в личке, продолжим завтра