Существует таблица articles
, включая иерархические структуры articel. 1
сборка состоит из n
компонентов. Таким образом, мы можем просматривать структуру и использование (до и ) для статьи.Oracle подключается путем включения критериев останова
Использование Оракулов hierarchical queries Это можно сделать очень эффективно на уровне sql.
SELECT item
FROM articles
START WITH component = '0815'
CONNECT BY NOCYCLE PRIOR assembly = component;
Представьте себе, что имеется винт с изделием. Этот винт используется во множестве сборок и снова их сборок. Мы хотим выяснить, используется ли ссылка в конкретных сборках, определенных в статье WHERE
, несколько уровней выше.
SELECT item
FROM articles
WHERE attr1 = 'marker' --any condition
START WITH component = '0815'
CONNECT BY NOCYCLE PRIOR assembly = component;
Это заявление отлично работает, но будет оценивать все возможные сборки в результате. В нашем случае нас просто интересует, если есть хотя бы одна сборка, которая соответствует и не в целом результате. Заявление требует минут для всех сборок, но может быть значительным быстрее, когда оно останавливается после первой строки, чтобы ответить на заданный вопрос.
Есть ли способ сказать Oracle отменить этот запрос после первого совпадения?
Если не так много статей, имеющих 'attr1 =«marker'', почему вы не 'START WITH' те и измените направление своего 'CONNECT BY', чтобы найти винты? –
Спасибо за ваш ответ. Есть '> 4k' сборки для условия' WHERE'. Объект, который я хочу проверить, - это винт. Винт - наихудшая статья. Я хочу ответить на вопрос, существует ли хотя бы одна сборка со специальными значениями атрибутов. Я уверен, что с вашей идеей дерево поиска станет еще больше.И у меня также нет возможности * прервать * запрос в первом матче. – wenzul
По крайней мере, вы можете остановить каждую ветвь, взорванную после первого матча. Вид 'CONNECT BY NOCYCLE PRIOR assembly = component AND PRIOR attr1! = 'Marker'' – Serg