Я нахожусь в своей голове с большим запросом mysql (mysql 5.0), и я надеюсь, что кто-то здесь может помочь.индексы в mysql SELECT AS или с помощью Views
Ранее я спросил, как получить различные значения из объединенного запроса mysql count only for distinct values in joined query
Ответ я погорячился (с использованием подзапроса с присоединиться в качестве)
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, но я продолжал возиться с разными типами , это в конечном итоге дает мне результат, который я хотел).
Каков наилучший способ создать запрос, подобный этому, который позволит мне воспользоваться преимуществами индексов? Dare Я говорю, у меня на самом деле есть еще одна таблица для добавления в микс позже.
В настоящее время мой запрос занимает 0,8 секунды, но я уверен, что если я смогу воспользоваться индексами, это может быть значительно быстрее.
Просмотрев рекомендацию Квасной по использованию SPACIAL INDEX, я понял, что это была ошибка в индексе, который у меня был, и время отклика значительно снизилось (теперь 0,1 секунды). Однако, EXPLAIN все еще указывает, что я делаю запрос неиндексированных столбцов. – pedalpete