Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Оптимизация SQL запроса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Okula
Отправлено: 01 Августа, 2012 - 22:56:39
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




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

Данный код выбирает пути роутинга, разрешенные для конкретного пользователя(user), в зависимости от принадлежности к группе(group) и наличия соответствующих прав(permission).
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `route` WHERE `id` IN (
  2.         SELECT `route_id`
  3.         FROM `route_permission`
  4.         WHERE `permission_id`
  5.                 IN (
  6.  
  7.                         SELECT  `permission_id`
  8.                         FROM  `group_permission`
  9.                         WHERE  `group_id`
  10.                         IN (
  11.  
  12.                                 SELECT  `group_id`
  13.                                         FROM  `user_group`
  14.                                                 WHERE  `user_id` =1
  15.                                 )
  16.                
  17.                         UNION (
  18.  
  19.                                 SELECT permission_id
  20.                                         FROM user_permission
  21.                                                 WHERE  `user_id` =1
  22.                         )
  23.         )
  24. )

Прикреплено изображение (Нажмите для увеличения)
187_1343850096.png_121.png
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB