Я над головой с большим запросом mysql (mysql 5.0), и я надеюсь, что кто-то здесь может помочь.
Ранее я спрашивал, как получить отдельные значения из объединенного запроса mysql count только для различных значений в объединенном запросе
Ответ, который я получил (используя подзапрос с соединением как)
select * from media m inner join ( select uid from users_tbl limit 0,30) map on map.uid = m.uid inner join users_tbl u on u.uid = m.uid
к сожалению, мой запрос стал более неуправляемым, и, хотя он у меня запущен, присоединение к производной таблице занимает слишком много времени, поскольку для производного запроса нет доступных индексов.
мой запрос теперь выглядит так
SELECT mdate.bid, mdate.fid, mdate.date, mdate.time, mdate.title, mdate.name, mdate.address, mdate.rank, mdate.city, mdate.state, mdate.lat, mdate.`long`, ext.link, ext.source, ext.pre, meta, mdate.img FROM ext RIGHT OUTER JOIN ( SELECT media.bid, media.date, media.time, media.title, users.name, users.img, users.rank, media.address, media.city, media.state, media.lat, media.`long`, GROUP_CONCAT(tags.tagname SEPARATOR ' | ') AS meta FROM media JOIN users ON media.bid = users.bid LEFT JOIN tags ON users.bid=tags.bid WHERE `long` BETWEEN -122.52224684058 AND -121.79760915942 AND lat BETWEEN 37.07500915942 AND 37.79964684058 AND date = '2009-02-23' GROUP BY media.bid, media.date ORDER BY media.date, users.rank DESC LIMIT 0, 30 ) mdate ON (mdate.bid = ext.bid AND mdate.date = ext.date)
фу!
Итак, как видите, если я правильно понимаю свою проблему, у меня есть две производные таблицы без индексов (и я не отрицаю, что, возможно, я как-то напортачил с операторами Join, но я продолжал возиться с разными типами, это закончилось дал мне результат, который я хотел).
Каков наилучший способ создать подобный запрос, который позволит мне воспользоваться преимуществами индексов? Осмелюсь сказать, что на самом деле у меня есть еще одна таблица, которую я добавлю позже.
В настоящее время мой запрос выполняется за 0,8 секунды, но я уверен, что если бы я мог воспользоваться преимуществами индексов, это могло бы быть значительно быстрее.