یک راه هم اینه که حجم دیتابیس رو فدای سرعت کنین!

یک فیلد دیگه به جدول اضافه کنین به اسم path و در همون زمان insert/update مسیر رو هم بسازین و در اون ذخیره کنین.
چون مسیر parent هر node از قبل مشخصه، زمانبر هم نیست و اگر batch هم باشه سرعت کم نمیشه،
چون کافی هست parent به مسیر parent اضافه و در مسیر child ذخیره بشه.

از طرفی،
شاید نگرانی شما برای رکوردی های زیاد چندان موردی نداشته باشه.
المانهای فایل های html یا گره های xml هم ساختا مشابه دارن و parserها سریع در اونها جستجو میکنن و تازه اینها دیتابیس هم نیستن.

شاید اگر یک دیتابیس تست با چند میلیون رکورد بسازین و شرایط جستجو رو شبیه سازی کنین نگرانی رفع بشه،
و همین کد پست 2 که پیشنهاد هوش ساختگی هست، ممکنه مناسب باشه (یا با ویرایش درست بشه).
چون بیشتر اینها رو بر اساس دیتابیس learn مایکروسافت و پاسخ های پذیرفته شده جاهایی مثل stackoverflow میاره.
به هر حال پرسش شما از نوعی هست که قبلا برای خیلی ها پیش آمده و معمولا برای اینها جواب های خوبی پیدا میشه.