|   |   | 
| 
 | ВНУТРЕ-ВНУТРЕННЕЕ перевысоединение без ВТ - рабочий вариант? | ☑ | ||
|---|---|---|---|---|
| 0
    
        bolobol 08.11.22✎ 17:36 | 
        День добрый!
 Надо отобрать из ВТ_Комплекты (спр.Комплект состоит из Номенклатур, хранящихся в спр.Комплект.ТЧ) только те, что содержат Номенклатуру с нужными значениями свойства У некоторой Номенклатуры есть в рсв.ЗначенияСвойств нужное Значение свойства, нужные значения перечислены в ВТ_Значения. Рабочий ли вариант такого отбора (синтаксис упрощён): ВЫБРАТЬ РАЗЛИЧНЫЕ // получаем составы комплектов, убирая дублирующуюся до семи раз Номенклатуру в Комплекте Комплект, Номенклатура ПОМЕСТИТЬ ВТ_КомплектНоменклатура ИЗ ВТ_Комплекты ВНУТРЕННЕЕ спр.Комплекты.Номенклатура ПО ВТ_Комплекты.Комплект = спрКомплектыНоменклатура.Ссылка ИНДЕКСИРОВАТЬ ПО Комплект, Номенклатура ; ВЫБРАТЬ ВТ_Комплект.* ПОМЕСТИТЬ ВТ_КомплектыОтбор ИЗ ВТ_КомплектНоменклатура ВНУТРЕННЕЕ рсв.ЗначенияСвойств ПО Свойство = &НужноеСвойство И ВТ_КомплектНоменклатура.Номенклатура = рсвЗначенияСвойств.Номенклатура ВНУТРЕННЕЕ ВТ_Значения ПО рсвЗначенияСвойств.Значение = ВТ_ЗначенияЗначение ВНУТРЕННЕЕ ВТ_Комплекты ПО ВТ_КомплектНоменклатура.Комплект = ВТ_Комплекты.Комплект Работает быстро, строк в таблицах от 250к до млн. Имеет ли смысл делать ВТ на каждый шаг, и выражать рсв.ЗначенияСвойств.Объект КАК Номенклатура, с индексированием каждой ВТ? | |||
| 1
    
        Сергиус 08.11.22✎ 17:57 | 
        (0)А если проверить?)     | |||
| 2
    
        дущ1 08.11.22✎ 18:05 | 
        (0) честно говоря, лень вникать. Но если нужна скорость, то все по кускам в кучу ВТ с индексированием, а потом скрещивать, если приоритет на занимаемую оперативную память, то можно и так как сейчас. Хотя я бы даже просто для читаемости кода сделал все таки последовательно. Вначале собрал все в ВТ, а потом их скрещивал попарно.     | |||
| 3
    
        nicxxx 08.11.22✎ 22:57 | 
        работает быстро, потому что для современного железа это совсем не bigdata)) я бы так оставил. запрос и так не длинный и вполне читабельный. а на создание врем таблиц еще время будет тратиться и ресурс HDD/SSD     | |||
| 4
    
        rudnitskij 09.11.22✎ 00:15 | 
        (0) вы из ВТ_Комплекты получаете данные, помещаете их в таблицу, чтобы эту таблицу потом опять внутренне соединить с ВТ_Комплекты? Не понимаю нахрена это надо
 ЗЫ. Не забывайте потом уничтожать временные таблицы | |||
| 5
    
        bolobol 09.11.22✎ 13:26 | 
        (4) ВТ_Комплекты - большая, дублирование упоминаний комплектов помноженное на номенклатуру - там будут сотни миллионов записей, которые потом сворачивать, поэтому - краткая ВТ создаётся, а по ней отбор из ВТ_Комплекты в конце     | |||
| 6
    
        rudnitskij 09.11.22✎ 15:42 | 
        (5) если у вас "ВЫБРАТЬ РАЗЛИЧНЫЕ" - то всё уже там свернуто     | |||
| 7
    
        bolobol 09.11.22✎ 15:43 | 
        (6) Ага, конечно. Выборка сворачивает исходную таблицу?     | |||
| 8
    
        rudnitskij 09.11.22✎ 18:45 | 
        (7) если у вас нет числовых колонок - то слово РАЗЛИЧНЫЕ всё свернет. Если числовые есть - надо по ним делать суммирование и группировку по нечисловым, тогда РАЗЛИЧНЫЕ не надо.
 А от того, что вы из большой таблицы выбрали данные в маленькую, а потом внутренним соединением соединяете опять с той же большой, никакого сворачивания не произойдет | |||
| 9
    
        bolobol 09.11.22✎ 19:03 | 
        (8) какая дичь... Выборка на то и предназначена, чтобы выбрать только то что необходимо, как тут - из большого объёма сделать маленький, необходимый, а затем, когда данные стали ещё меньше - оставить в большой таблице искомый маленький набор     | |||
| 10
    
        rudnitskij 09.11.22✎ 22:44 | 
        (9) какая дичь... соединение с одной и той же таблицей никак отбор не уменьшает. А отборы из второго запроса можно сразу наложить на первый.
 Хотя если у вас талант писателя - пишите конечно, кто ж запретит | |||
| 11
    
        bolobol 10.11.22✎ 14:41 | 
        (10) Вы проверяли то что советуете? Ведь это прямо противоречит рекомендациям. Более того, соединение по неиндексированным полям - это вообще не дождаться результатов будет, не говоря про то, что памяти не хватит     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |