2016-12-06 4 views
1

Я пытаюсь понять лучший образец или методы для написания SQL-запросов, которые включают в себя несколько таблиц, таких как разрешения на объекты. Я могу получить результат, который я ищу, но хочу знать, является ли это лучшей практикой.Является ли пирамида «SELECT IN» хорошей практикой?

Пример:

SELECT * FROM windows WHERE id IN(
    SELECT `window` FROM window_groups WHERE `group` IN(
     SELECT DISTINCT `group` FROM user_groups WHERE `user` = 1 
    ) 
) 

Вопрос: Является ли этоSELECT IN() "Пирамида" хорошая практика?

+1

В принципе ничего плохого. Но «это хорошая практика» тесно зависит от того, насколько огромны данные для работы. – cFreed

+0

@cFreed ok cool, следует ли использовать 'view', если бы это был большой набор данных? –

+1

@ JordanDavis, представление не даст вам улучшения производительности. Возможно материализованное представление. – GuiSim

ответ

0

Я не рекомендую этот шаблон по одной причине -
Он позволяет извлекать информацию только из внешней таблицы, что делает ее неквалифицированной для многих случаев использования, а также трудно отлаживается.

+0

Итак, по этим причинам вы бы использовали 'join'? –

+0

@ JordanDavis - да. –

Смежные вопросы