Xwab
Форумыnavigate_nextНебольшие вопросы по PHP/MySQL

Оптимизация SQL
Сообщения
iceman12

Ребят, подскажите, пожалуйста, можно ли оптимизировать данный SQL-код, хотя сейчас он показывает неплохую производительность, но такая вложенность удручает.
В документе тот же код, что и на скриншоте.
Таблицы, участвующие в этой оргии:
route - роутинг
route_permission, group_permission, user_group, user_permission - связующие таблицы.

Данный код выбирает пути роутинга, разрешенные для конкретного пользователя(user), в зависимости от принадлежности к группе(group) и наличия соответствующих прав(permission).

01 Авг 2012, 21:41
G.N.C.

iceman12, вложенность кода часто не играет ключевого значения в производительности, однако расскажи о размерах таблицы. Код состоит из множества простых выборок, так что проблемы с производительностью навряд ли будут...
добавлено спустя 15 минут:
iceman12, перестроил немного запрос, но необходимость в этом сомнительная, думаю в конце запроса если число результатов фиксировано неплохо было бы добавить лимит:

SELECT * FROM `route`,(
   SELECT `route_id`
   FROM `route_permission`
   WHERE `permission_id`=(SELECT  `permission_id` FROM  `group_permission` WHERE  `group_id`=(SELECT  `group_id` FROM  `user_group` WHERE `user_id`=1 LIMIT 1) LIMIT 1)
 OR
`permission_id`=(SELECT permission_id FROM user_permission WHERE  `user_id` =1 LIMIT 1)
) as route_permission WHERE route.id=route_permission.id

02 Авг 2012, 12:48
Ответить на тему