|
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
|
||||||||||||
Возможно ли обойтись без вспомогательной таблицы?13.12.2024, 09:30. Показов 1026. Ответов 13
Метки нет (Все метки)
Есть таблица с иерархическими записями:
В плане запроса при этом восклицательным знаком подсвечиваются два блока, с уведомлением, что используется 'tempdb'. Хотя, если я правильно понимаю цифры из плана, именно эти блоки не отнимают слишком много ресурсов (cost: 1-2%):
-- Сейчас используется вариант именно с реальной вспомогательной таблицей, но, может, есть какие-то другие инструменты для этого, не уступающие по скорости? Почитал про 'hierarchyid', но это, если я правильно понял, просто вариант замены 'master_smp_id' на особый тип поля. И для выполнения обозначенного выше запроса мне всё равно придётся предварительно составлять список всех предков для каждой записи (и оформлять его в виде виртуальной или реальной таблицы).
0
|
||||||||||||
| 13.12.2024, 09:30 | |
|
Ответы с готовыми решениями:
13
Можно ли в запросе обойтись без промежуточной таблицы? Возможно ли обойтись без XPath Возможно ли обойтись без циклов, используя сложный запрос с динамическими параметрами? |
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
|||||||
| 13.12.2024, 09:50 | |||||||
|
Постройте view with schemabinding + индексы вместо таблички
1
|
|||||||
| 13.12.2024, 09:57 | ||
|
Расскажите, пожалуйста, в чём профит? Я видел такое только в рамках таблиц и ХП, оптимизированных для памяти.
0
|
||
|
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
|
|||||
| 13.12.2024, 10:11 [ТС] | |||||
|
Чтобы добавить индекс на View, надо сначала добавить ему уникальный кластеризованный индекс.
0
|
|||||
| 13.12.2024, 11:33 | ||||
|
kotelok, я в иерархиях не разбираюсь, т.к. не использую в силу, как раз, проблем с длительностью их обработки. Я бы заменил иерархию на плоский список. Если заменить нельзя, то настроил бы синхронизацию с такой плоской таблицей, чтобы она изменялась вместе с иерархической. И работал бы с плоской всегда. UPD: UPD2:
0
|
||||
|
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
|
||
| 13.12.2024, 11:49 [ТС] | ||
|
И есть триггеры на исходной таблице (insert/update/delete), в рамках которых "плоская" таблица поддерживается в согласованном состоянии. Вот попытался уйти от этой сложной логики, но достаточно быстрого варианта пока не нашёл.
0
|
||
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
|||
| 13.12.2024, 12:32 | |||
![]() У вас нормальное решение, чем оно не устраивает? долго дерево перестраивается? Когда-то TaPaK говорил, что используется развернутая табличка для дерева у нас вторая таблица аля ParentId | ChildId где для каждого вашего ID = 1 будет 3 записи 1-1 1-2 1-3
1
|
|||
| 16.12.2024, 10:31 | |
|
PaulWist, всё равно непонятно…
1. У ТСа иерархическая табличка. 2. Он собирает из неё данные по по всем предкам. Это работает долго. 3. Если иметь табличку на основе иерархической, но "плоскую" то всё летает. Проблема в поддержке такой вспомогательной таблицы. Индексированное представление — это вычисленный запрос. То есть, можно заранее, например, сгруппировать данные в исходной таблицы и это вычисленное состояние будет доступно на диске. Плюс, оно само будет актуализироваться на основе всех задействованных источников при их изменении. Это удобно. Платим за это удобство увеличением времени изменения источников. Но главная проблема в огромном количестве ограничений таких индексированных преставлений — в них запрещено практически всё. Именно поэтому я не понимаю, как такая вьюха поможет ТСу, ведь сделать её в виде плоской таблицы на основе иерархии не представляется возможным. Во всяком случае, я не понимаю, как. Я бы написал ХП для Delete/Insert/Update иерархической таблички и встроил в неё параллельное изменение плоской таблицы. Если уж от иерархии избавиться по каким-то причинам нельзя. Можно, конечно. и на триггерах построить, но, один хрен, придётся (уже) вычислять (а не иметь на входе), какие данные изменились и производить параллельные правки плоской. Ссылка на справку со скрином ограничений
0
|
|
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
||||
| 16.12.2024, 12:33 | ||||
|
0
|
||||
|
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
|
||
| 16.12.2024, 13:05 [ТС] | ||
|
При этом информация обо всех предках записи нужна при любой CRUD-операции (в т.ч. при считывании коллекции по условию). И информация должна быть актуальной в любой момент времени, потому поддерживать "плоскую" таблицу в согласованном состоянии приходится через триггеры исходной таблицы (а не актуализировать раз в час/сутки по расписанию). Ну и просто есть сомнения, насколько адекватно в триггере на, скажем, редактирование записи, реализовывать достаточно тяжёлую логику анализа/модификации другой таблицы.
0
|
||
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
|
| 16.12.2024, 13:24 | |
|
Ограничения на глубину есть?
0
|
|
|
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
|
||
| 16.12.2024, 13:36 [ТС] | ||
|
0
|
||
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
||
| 16.12.2024, 14:02 | ||
|
это много
Добавлено через 7 минут
0
|
||
| 16.12.2024, 14:43 | ||
|
Анализируя эти наборы можно точечно и быстро актуализировать плоскую.
0
|
||
| 16.12.2024, 14:43 | |
|
Помогаю со студенческими работами здесь
14
Возможно ли переделать код этой программы так, чтобы обойтись без функции? Возможно ли множество без таблицы? Возможно ли одним sql обойтись С вспомогательной функции произведите сортировку массива по убыванию. С вспомогательной функц Верстка таблицы с отступами между строк, но без border-collapse: separate возможно? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|