#5
by Mouzem
а разве не ввели расстрел за NULL? по мне, так только как говорит делать, так и только так.
#18
by Fragster
+ Количество ~160к, отбор ~8к, повторений: 1 Отбор через массив: 1 Отбор через левое соединение: 1 Отбор через не В: 189 Отбор через не В (Exists): 1 Отбор через внутреннее соединение + индекс: 1 Отбор через не В + индекс: 1 Отбор через не В (Exists) + индекс: 1
#19
by Fragster
дисквалифицировали В за унылость, увеличили повторения до 10: Количество: 162 168 отбор: 8 108 повторений: 10 Отбор через массив: 18 Отбор через соединение: 16 Отбор через В (Exists): 17 Отбор через соединение + индекс: 16 Отбор через В + индекс: 17 Отбор через В (Exists) + индекс: 17
#20
by Dmitry77
можно загрузить обе таблицы в одну большую,добавить числовое поле, для первой 1, для второй 2. Потом сгруппировать с сумированием по новому полю, потом отобрать только записи, где сумма = 1 (будут только те что в 1 таблице) =2 где только во второй = 3 где в обоих.
#22
by Fragster
Количество: 162 170 отбор: 8 108 повторений: 10 Отбор через массив: 18 Отбор через соединение: 16 Отбор через В (Exists): 15 Отбор через соединение + индекс: 15 Отбор через В + индекс: 17 Отбор через В (Exists) + индекс: 16 Отбор через Объединение: 27
#25
by Mouzem
Чет я не догнал, получается что объединить 2 таблицы и отобрать по нулу быстрее чем "не в"?
#26
by Fragster
мораль в том, что нужно в каждом конкретном случае проверять отдельно разные варианты
#27
by viktor_vv
Поэксприментировал немного с планами запросов. Есть сомнение по корректности теста на exist. Конкретное на |ГДЕ судя по тому во что 1С транслирует такую конструкцию для скуля ( из ) там получается AND EXISTS(SELECT 1 FROM #tt2 T2 WITH(NOLOCK) WHERE (T1._Fld18873RRef = T2._Q_001_F_000RRef) AND (T1._Fld18875RRef = T2._Q_001_F_001RRef)) В случае если второе поле Истина, мне кажется, при трансляции его просто пропустят и останется exist по одному полю. При этом для in и exist по одному полю строятся абсолютно одинаковые планы запроса. Select id From sc72 Where id in (select id from #tempkl) Select id From sc72 as sc Where exists (select id from #tempkl where id = sc.id ) а вот для exsist по двум полям уже другой план c hash match Select id From sc72 as sc Where exists (select id from #tempkl where id = sc.id and sp81=sc.sp81)
#28
by Fragster
за планы не смотрел, а факт в том, что В по одному полю транслируется в in, а по 2м и более - в exists (по крайней мере для mssql)
#29
by viktor_vv
Согласен, но меня смущает именно второе поле Истина. Лучше бы может дернуть во временную таблицу реальное поле вместо Истина. К тому же план для Select id From sc72 as sc Where exists (select id from #tempkl where id = sc.id and 1=1) идентичен по одному полю и in.
#30
by Fragster
да. а вот для НЕ В - уже очень разные планы, судя по времени выполнения, которое в 200 раз различается
#31
by viktor_vv
Есть такое Для in получается Nested loops / inner join Для not in получается Merge join / Left anti semi join это еще зависит от соотношения количества записей в таблицах и наличия индекса.
#32
by viktor_vv
+ Для второго я не очень понимаю механизм этой операции, надо бы почитать умных книжек :).
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Таблицы, таблицы, таблицы... Будь они неладны
- Получить id и получить объект по id
- Как получить значения последней записи в регистре сведений?
- Как программно получить получить пароль пользователя в текущем сеансе работ
- Регистр сведений - получить запись и открыть форму записи.
- Как получить разность дат (Нужно получить количество дней)
- v8: как получить индекс первой строки в ТЗ?
- Как получить адрес текущей ячейки таблицы из модуля и из самой таблицы?
- Свойства НОВОЙ записи при копировании записи Регистра Сведений
- Как получить значение первой строки в определенной колонке таблицы значений
- Как получить ГУИД элемента по OLE, записать и получить по нему ссылку?
- Как имея ссылку на строку таблицы значений получить название самой таблицы
В этой группе 1С
- Argox OS-203DT в 1С Розница 2.0
- Код региона в ЗУП
- в отчете СКД не видны контрагенты
- Остаток неверно переходит на следующий день
- ActiveDocument Excel Поиск и замена
- Не обновляется представление ссылки в форме документа
- Ресурс Количество с учетом серии в регистре накопления Свободные остатки
- РИБ. Сменить текущий узел.
- v7: права доступа акту сверки
- SetWorldTransform() некорректно отрабататывает для большого рисунка.
- ЗУП 2.5: Анализ начисленных налогов и взносов в разрезе ОКАТО/КПП.
- Справочник Хранилище дополнительной информации как изменить размер файла?
- ЗУП 71.1 .в форму Т-53 Попадает уволенный человек.
- Не сохраняются настройки табличного поля
- Ошибка обработки расшифровки отчета в web клиенте
- Вход в программу временно невозможен... Как победить?
- v8: Вывести текущую дату в УниверсальныйОтчет
- Анализ регистра свободные остатки показывает огромный список расхождений :(((
- Компоновщик настроек компоновки данных в упр формах
- Табличный документ Сумма как в экселе