Ich habe folg. Query:
explain SELECT f.id,f.artist,f.title,a.name AS album,f.addedby,f.status
FROM catfiles f LEFT JOIN catalbums a ON f.album=a.id
WHERE f.type = '1'
AND (f.artist LIKE '%blub%'
OR f.title LIKE '%blub%'
OR a.name LIKE '%blub%')
ORDER BY f.type,f.artist,f.title,f.status
Output:
table type possible_keys key key_len ref rows Extra
f ALL NULL NULL NULL NULL 605 where used; Using filesort
a eq_ref PRIMARY,id PRIMARY 3 f.album 1 where used
Bei 'a' ist es ja passend - aber warum benutzt er bei f keine Indices? Ich hab es schon mit einzelnen Indices (artist) und multi-column Indices (artist,title,album) versucht, aber irgendwie mag er keinen Index benutzen - beim Index 'type' (type,artist,title,album) zeigt er diesen immerhin unter possible_keys an... Doch er benutzt ihn nicht.
explain SELECT f.id,f.artist,f.title,a.name AS album,f.addedby,f.status
FROM catfiles f LEFT JOIN catalbums a ON f.album=a.id
WHERE f.type = '1'
AND (f.artist LIKE '%blub%'
OR f.title LIKE '%blub%'
OR a.name LIKE '%blub%')
ORDER BY f.type,f.artist,f.title,f.status
Output:
table type possible_keys key key_len ref rows Extra
f ALL NULL NULL NULL NULL 605 where used; Using filesort
a eq_ref PRIMARY,id PRIMARY 3 f.album 1 where used
Bei 'a' ist es ja passend - aber warum benutzt er bei f keine Indices? Ich hab es schon mit einzelnen Indices (artist) und multi-column Indices (artist,title,album) versucht, aber irgendwie mag er keinen Index benutzen - beim Index 'type' (type,artist,title,album) zeigt er diesen immerhin unter possible_keys an... Doch er benutzt ihn nicht.
Kommentar