Запрос. Как сортировать временную таблицу?
По теме из базы знаний
- Мониторинг SQL Server с помощью Extended Events (и не только) для 1С. Как держать руку на пульсе?
- Задачи по доработке типовых решений. ЗУП 3.1. Доработка выплаты аванса фиксированной суммой, проверка на отработанное время. Вывод предупреждения как в ЗУП 2.5
- Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах
- Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)
- Внутренняя жизнь ваших запросов PostgreSQL. Как и зачем «подглядывать» в подробности
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) dmt,
Если под "Временной таблицей" понимать то, с чем работает объект МенеджерВременныхТаблиц, то в языке запросов есть специальная фраза "ИНДЕКСИРОВАТЬ", например
Если под "Временной таблицей" понимать то, с чем работает объект МенеджерВременныхТаблиц, то в языке запросов есть специальная фраза "ИНДЕКСИРОВАТЬ", например
|ВЫБРАТЬ
| Остатки.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| Остатки.ЗаказПоставщику КАК ЗаказПоставщику,
| Остатки.Валюта КАК Валюта,
| Остатки.Период КАК Период,
| Остатки.ДатаПлатежа КАК ДатаПлатежа,
| Остатки.НовыйКОплатеОстаток КАК КОплатеОстаток,
| Остатки.КОплатеОстатокНаКонецПериода КАК КОплатеОстатокНаКонецПериода,
| Остатки.ПросроченнаяЗадолженность КАК ПросроченнаяЗадолженность
|ПОМЕСТИТЬ ТаблицаОстатковПоставщиков
|ИЗ
| НовыеОстаткиПоставщиков КАК Остатки
|ИНДЕКСИРОВАТЬ ПО
| АналитикаУчетаПоПартнерам,
| ЗаказПоставщику,
| Валюта
Показать
(23) dmt, для примера из (17)
результат в скрине ниже
ВЫБРАТЬ
"А" КАК Поле1,
"1" КАК Поле2
ПОМЕСТИТЬ ВременнаяТаблица1
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
"В" КАК Поле1,
"1" КАК Поле2
ПОМЕСТИТЬ ВременнаяТаблица2
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВременнаяТаблица1.Поле1 КАК Поле1,
ВременнаяТаблица1.Поле2 КАК Поле2
ИЗ
ВременнаяТаблица1 КАК ВременнаяТаблица1
ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблица2 КАК ВременнаяТаблица2
ПО (ИСТИНА)
Показатьрезультат в скрине ниже
Прикрепленные файлы:
Может как-то так.
ВЫБРАТЬ
РРР.поле1
ПОМЕСТИТЬ ййй
ИЗ
Справочник..... КАК РРР
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ППП.Поле2
ПОМЕСТИТЬ ывывыв
ИЗ
Справочник......КАК ППП
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ывывыв.Поле2,
ййй.поле1
ИЗ
ййй КАК ййй,
ывывыв КАК ывывыв
УПОРЯДОЧИТЬ ПО
поле1
Показать
Внезапно сейчас обнаружил, что при помещении данных во временную таблицу с индексированием по полю, платформа сортирует эти данные по этому полю. Также, теперь есть функция АВТОНОМЕРЗАПИСИ() которая нумерует данные по порядку при помещении во временную таблицу, что даёт возможность нам независимо отсортировать поля таблицы и связать их потом по номеру. Вот пример:
ВЫБРАТЬ
1 КАК ДеньП,
10 КАК ДеньФ
ПОМЕСТИТЬ Данные
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1,
11
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
15,
30
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1,
30
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
1,
31
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2,
10
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2,
11
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2,
30
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
2,
31
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
14,
10
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
14,
11
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
14,
30
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
14,
31
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
15,
10
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
15,
11
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
15,
31
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Данные.ДеньП КАК ДеньП,
АВТОНОМЕРЗАПИСИ() КАК ПорядковыйНомер
ПОМЕСТИТЬ УпорядоченныеДниП
ИЗ
Данные КАК Данные
ИНДЕКСИРОВАТЬ ПО
ДеньП
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
Данные.ДеньФ КАК ДеньФ,
АВТОНОМЕРЗАПИСИ() КАК ПорядковыйНомер
ПОМЕСТИТЬ УпорядоченныеДниФ
ИЗ
Данные КАК Данные
ИНДЕКСИРОВАТЬ ПО
ДеньФ
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
УпорядоченныеДниП.ДеньП КАК ДеньП,
УпорядоченныеДниФ.ДеньФ КАК ДеньФ
ИЗ
УпорядоченныеДниП КАК УпорядоченныеДниП
ПОЛНОЕ СОЕДИНЕНИЕ УпорядоченныеДниФ КАК УпорядоченныеДниФ
ПО УпорядоченныеДниП.ПорядковыйНомер = УпорядоченныеДниФ.ПорядковыйНомер
Показать
(39)Внезапно наткнулся на этот эффект. Так что это не точно. Я выполнял индексирование, а потом просматривал содержимое временной таблицы. И данные там реально были отсортированы. Проверял это только на числовых данных. И в файловой базе. Не уверен, что на SQL сервере эффект повторится.
(40) Эффект существует, но похоже что это не совсем сортировка, а какое-то побочное явление при создании индекса. Когда записей немного - на вид они отсортированы, но когда их несколько тысяч то начинают встречаться "недосортированные" вставки. Так что создать индекс не значит отсортировать саму временную таблицу в запросе.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот