v tabulke rub moze byt clanok zaradeny aj dva krat preto ten GROUP BY clanok.clanok_id
Akonahle pouzijem GROUP tak sa pouziju temp tabulky a prikaz sa vykonava enormne dlho
tabulka server sa pripaja kvoli overeniu ci existuje alebo nie, popripade ako filter podla premenej z vyhladavania
SELECT
clanok.clanok_id clanok_id,
COUNT(DISTINCT clanok.slovo_id) pocet
FROM clanok
INNER JOIN
server ON server.clanok_id = clanok.clanok_id
INNER JOIN
rub ON rub.clanok_id = clanok.clanok_id
WHERE slovo_id IN (2531,3576)
GROUP BY clanok.clanok_id
HAVING pocet = '2'
ORDER BY clanok.publikovany DESC
LIMIT 0, 20
explain:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE clanok range slovo_id slovo_id 4 NULL 47004 Using where; Using index; Using temporary; Using filesort
1 SIMPLE server ref PRIMARY PRIMARY 4 db.clanok.clanok_id 1 Using index
1 SIMPLE rub ref clanok_id clanok_id 4 db.clanok.clanok_id 1 Using index