select *
from tasks_table tt
left join users_table as ut
on ut.user_uid=tt.user_uid
left join user_groups_table as gt
on gt.group_uid=ut.group_uid
where tt.responsible_id=? or
exists (select 1
from my_dumb_table as dt
where dt.record_uid=tt.record_uid and
dt.group_uid=gt.group_uid and
dt.dumb_text = 'some_dumb_text')
select *
from tasks_table tt
left join users_table as ut
on ut.user_uid=tt.user_uid
left join user_groups_table as gt
on gt.group_uid=ut.group_uid
where tt.responsible_id=? or
exists (select 1
from my_dumb_table as dt
where dt.record_uid=tt.record_uid and
dt.group_uid=gt.group_uid and
dt.dumb_text = 'some_dumb_text')
select ... from .. t1, (select ... from ...) as t2 where t1.col=t2.col
Если ключ содержится в корне, он найден. Иначе определяем интервал и идём к соответствующему потомку. Повторяем.
Основной недостаток В-деревьев состоит в отсутствии для них эффективных средств выборки данных (т.е. метода обхода дерева), упорядоченных по отличному от выбранного ключа.
А по теме: я к тому же не могу придумать нормальной схемы данных под индивидуальный доступ к объектам в системе основанной на uuid ключах в mysql.Это обсуждение не для тостера. Скорее - это фриланс с teamviewer и доступом к этой БД и к приложению.