Я хочу запросить таблицу данных указанного уровня.Рекурсивный запрос Oracle, это так медленно, почему?
Например, я хотел бы узнать о глубине отношений между отцом и сыном 1, Тогда это мой путь.
1. Я первый рекурсивно опрашивать уровень всех данных
SELECT c.cid,pcid,level lv
FROM qm_product_cat c
start with pcid='0' CONNECT BY PRIOR CID=pcid
2. И тогда я запрос это,
select * from (
SELECT c.cid,pcid,level lv
FROM qm_product_cat c
start with pcid='0' CONNECT BY PRIOR CID=pcid
) where lv = 1
Вопросы:. Это так медленно и много повторений. Зачем? У вас есть лучший способ?
Что такое план запроса и количество строк в таблице продуктов? Вы рассматривали индекс в таблицах cid и pcid - я полагаю, что cid - это первичный ключ, так что у него уже есть индекс, но pcid может не быть? – kayakpim
, если вы хотите получить только один уровень, тогда вам не нужно подключаться, просто присоединитесь к таблице один раз для себя. – kayakpim
Пожалуйста, покажите образцы данных в таблице и ожидаемый результат, а также объясните планы и т. Д. – OldProgrammer