Как эффективно использовать многостольный запрос на соединение в SQL? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть постановка задачи в Apache Phoenix, в которой мне нужно объединить три таблицы для результата.У меня есть три вида таблицы Hbase, схема выглядит следующим образом

Группа таблиц: -

pk |Название |ownerId |данные

Члены таблицы: -

pk |parentId |Email |данные

Таблица userinfo: -

pk |Email |Имя |Фамилия

Теперь я хочу выбрать группы, заголовок которых совпадает с входной строкой, если они не совпадают, и хочу получить группы, члены которых имеют имя, совпадающее с входной строкой.

Я уже пробовал запрос следующим образом: -

select * from Group where pk like 'Prefix_%' 
and (TITLE like '%A%'
 or (OWNER_ID in
   (
      select parentId from MEMBERS where EMAIL in
      ( select distinct(EMAIL) from  USER_INFO
        where pk like 'PREFIX%' and 
        ( FIRST_NAME like '%A%' or LAST_NAME like '%A%')
      )
   )
) ) order by TITLE limit 5;

Но это заняло слишком много времени, и я попытался выполнить запрос на соединение слева с аналогичным, но не дать ожидаемого результата.Подскажите пожалуйста как можно это улучшить?

...