#2
by qeos
понял. нужен был пример. это я просто в попыхах тему создал. Вобщем допустим есть две таблицы: вот как правильней будет? ниже два варианта <CODE>ВЫБРАТЬ РАЗЛИЧНЫЕ * ИЗ таблица1 ОБЪЕДИНИТЬ ВСЕ ПОЛНОЕ СОЕДИНЕНИЕ таблица2 СГРУППИРОВАТЬ ПО поле1 </CODE>
#10
by Necessitudo
Когда-то слышал, что использовать "Объединить" вместо "Объединить Все" зло злостное.
#13
by dmpl
СГРУППИРОВАТЬ имеет смысл при использовании агрегатных функций. РАЗЛИЧНЫЕ - ручками писать быстрее.
#14
by МишельЛагранж
>>ГРУППИРОВАТЬ имеет смысл при использовании агрегатных функций - не "имеет смысл", а необходимо в этом случае. РАЗЛИЧНЫЕ и СГРУППИРОВАТЬ - совершенно разные команды 1С. Кто вам посоветовал их сравнить?
#17
by Serginio1
Может и Хэш таблицу применять Используются разные алгоритмы sort unique/hash unique (distinct), sort group by/hash group by (group by). Реализация алгоритмов может варьироваться от версии к версии. { HASH |ORDER } GROUP Указывает, что агрегаты, описываемые в предложениях GROUP BY или DISTINCT запроса, должны использовать хэширование или упорядочивание.
#18
by МишельЛагранж
>>вернее и то и другое делается через сортировку таблицы - варианты сортировки в SQL никакого прямого отношения не имеют к самим командам 1С. Как и к их быстройдействию в запросах 1С. Как правильно написал Serginio1 - если и есть минимальные отличия в способах сортировки SQRT в SQL, то они влияния такого не оказывают, как последующая обработка в самом 1С.
#19
by H A D G E H O G s
Я правильно понимаю, что DISTINCT работает так: Hash group by - это: 1) Сортировка по агрегатным полям 2) Построение хеша по агрегатным полям (возможно одновременно с сортировкой) 3) Проход по таблице по алгоритму: Sort group by - это: 1) Сортировка по агрегатным полям 2) Проход по таблице по алгоритму: Если ПредыдущееПоле1<>ТекущееПоле1 ИЛИ... ПредыдущееПолеn<>ТекущееПолеn Тогда ПредыдущееПоле1=ТекущееПоле1;
#23
by H A D G E H O G s
Я понимаю, как группировать ТЗ программно, см. (19, вариант 2) я спрашиваю, так ли это делает SQL, ибо мне на ум приходит только такой алгоритм, но может кибернетики придумали что-то хитрее.
#28
by Serginio1
А нам нужны тоько неповторяющиеся значения Например Соответствие[Ключ]=1; КонецЦикла
#31
by H A D G E H O G s
Мы получили хеш таблицу, в ней есть повторяющиеся значения хеша, в случайном порядке. Мы должны: 1) Упорядочить таблицу по хешу и работать по алгоритму либо: 2) Обойти таблицу и собрать массив уникальных хешей, на каждом шаге проводя поиск в массиве.
#34
by Serginio1
А чего там тяжкого? Для sort group by нужно предварительно отсортировать. Для Хэш таблицы она стротися по ходу. Кстати нашел мои изыскания по сортировке слиянием на Delphi
#35
by Serginio1
Нет в Хэш таблице повторяющихся значений Еще раз Для каждого стр из Тз Цикл КонецЦикла
#36
by Serginio1
Смысл такой если процент уникальных значений мал, то применяем Хэш таблицу, так как затраты на сортировку будут больше чем построение Хэш таблицы А вот если повторяющихся значений мало то тут рулит сортировка
#38
by H A D G E H O G s
Еще раз, для закрепления. Таблица: НомерСтроки Номенклатура В хештаблице будут2 записи: 1)первая запись - хеш от слова "Яблоки", ссылка на строку номер 3. 2)вторая запись - хеш от слова "Груши", ссылка на строку номер 2. Так?
#41
by Serginio1
Для соединений например можно сделать Хэш таблицу где значениями может быть массив дублей ключей. Но это другая задача
#42
by МишельЛагранж
>>Для sort group by нужно предварительно отсортировать. Для Хэш таблицы она стротися по ходу. - так я и не уловил, в чем разница, если 98% сравниваемых таблиц - это случай из ( 36), когда уникальных значений основная масса. И как тут выбрка по хэшу будет существенно быстрее?
#44
by Serginio1
Хэш будет быстрее когда уникальных значений существенно меньше исходных данных. То есть количество строк в результирующей таблице значительно меньше, чем в исходных данных. Мы экономим на сортировке исходных данных. А вот когда количество строк в результирующей таблице составляет 98% то однозначно лучше сортировка. А вот процент раздела какой алгоритм лучше использовать только экспериментально.
#46
by Serginio1
Ну запрос кэшируется. Могут кэшироваться и результаты от параметров. Задача БД выбрать оптимальный алгоритм и многое можно сделать учитывая статистику
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Создаем ВК "без программирования",получаем задержку в N-сек без 100% загр.
- Как закрыть форму документа, без сохранения и без запроса на сохранение
- РАРУС vs ФОРЕС vs AXELOT vs ITOB
- Как сгруппировать данные в запросе, который формирует временную таблицу?
- OLE vs xml vs text vs другое
- СКД Сгруппировать ресурсы
- ЖК-панель (без тюнера) vs зомбо-ящик
- Jdeveloper vs Eclipse vs NetBeans
- SERVER 2008R2 vs 2012R2 vs 2016
В этой группе 1С
- Ошибка преобразования данных XML
- Ведомость по учету МПЗ показывает неверное количество
- Кнопка "Заполнить" внешней обработки в уф
- Выбираем щадящий монитор для программиста.
- ИТС & ошибка открытия базы документов
- Связь по типу обновить программно
- Подключение дисплея покупателя Штрих-Т D2 USB к Рознице 2.1.4.9_версия2
- Qt+Firebird transaction
- Дата и время, установленные на сервере, отличаются от настроек этого компьютера.
- УФ Таблица формы программно - отбор строк и доступность редактирования
- Скрыть кнопку на командной панели.
- Отключить контроль остатков на складе.
- ЗУП: проблема с корректирующей пачкой ПФР
- Управление Торговлей для балтии 11.0.1.6
- Как программно вызвать по кнопке внешнюю обработку в 1с 8.3?
- УФ: Программное добавление декорации на форму. Что-то бред какой-то.
- Перегрузка УТ 10.3 - БП 3.0
- Удержание с аванса в ЗУП 3.0
- Как отследить перемещение строки в ТЧ документа кнопками "Стрелка вверх/вниз"?
- не отрабатывает запрос по СОМ-соединению