Как я могу сохранить подобные запросы в mysql_slow.log?
У меня есть следующий запрос, мне нужна помощь.
SELECT a.artist, a.facepic
FROM artists_vs AS v, artists AS a
WHERE v.genreid =0
AND (v.artistid1 = a.artistid OR v.artistid2 = a.artistid)
ORDER BY v.bid DESC
LIMIT 20
Все поля в запросе проиндексированы, но когда я запускаю объяснение, я получаю следующее:
1 SIMPLE v ref genreid,artistid1,artistid2 genreid 4 const 15 Using temporary; Using filesort
1 SIMPLE a ALL PRIMARY NULL NULL NULL 18165 Range checked for each record (index map: 0x1)
Мне нужно, чтобы в my.cnf были включены журналы запросов-не-использования-индексов
Кто-нибудь может подсказать, как я мог бы переписать этот запрос, чтобы он не попал в медленный журнал?
1 ответ
Решение
Вы можете попробовать что-то вроде этого:
SELECT
a.artist,
a.facepic,
V.bid
FROM artists_vs AS v
inner join artists as a on v.artistid1 = a.artistid
WHERE v.genreid = 0
union
SELECT
a.artist,
a.facepic,
v.bid
FROM artists_vs AS v
inner join artists as a on v.artistid2 = a.artistid
WHERE v.genreid = 0
ORDER BY bid DESC
LIMIT 20