Народ, возможно ли оптимизировать этот запрос?
[code]
$sql = $this -> db -> pdo -> query("
(SELECT n.title as title,n.npc_id as id FROM npc as n, game as g WHERE g.id = n.npc_id AND g.type = 'npc' AND g.loc = '".$user['loc']."')
UNION
(SELECT u.login as title,u.user_id as id FROM `users` as `u`,`game` as `g` WHERE g.id = u.user_id AND g.type = 'user' AND g.loc = '".$user['loc']."' AND u.user_id != '".$user['user_id']."')
" -> fetchAll();
[/code]
Мне нужно добавить к этому еще один union, но мне кажется, что довольно большую нагрузку может создать) Или быть может разделить запросы и потом соединить через array_merge?
Тему перенёс из подраздела Программирование в подраздел Вопросы новичков!
Выполните этот запрос в mysql с командой EXPLAIN
Получите данные об использовании индексов + какие "операции" участвовали в запросе (типа временной таблицы на диске, файловой сортировке и т.д., всё что может быть медленным)
Mobiaaa, нет, это не то) explain не в помощь здесь, все равно ведь при таком запросе нагрузка будет ощутимой при большом кол-во выполнений, сам запрос можно ли переиграть по другому?
explain вернёт использование индексов
Если не будет индексов и база большая - то никакие оптмизации SQL запроса не помогут
MySQL будет "тормозить" на full scan всей таблицы
Mobiaaa, да про индексацию я понимаю) но ведь это все равно не выход