I have a MySQL query that I'd like help optimizing
(
SELECT
a.`CODE`,
a.`TITLE`,
a.`TEXT`,
a.`CODE_RUBRIC`,
r.`NAME`
FROM
`ARTICLE` a,
`RUBRIC` r
WHERE
a.`CODE_TYPE` = '2'
AND a.`CODE_RUBRIC` = r.`CODE`
AND r.`VIEW` = '1'
AND DATE_ADD(NOW(), INTERVAL -31 DAY) < `DATE`
GROUP BY r.`CODE`
ORDER BY RAND()
) UNION (
SELECT
a.`CODE`,
a.`TITLE`,
a.`TEXT`,
"BOOK",
"BOOK"
FROM
`RUBRIC` r,
`ARTICLE` a
WHERE
a.`CODE_TYPE` = '2'
AND a.`CODE_RUBRIC` = r.`CODE`
AND `JOURNAL` = '1'
AND DATE_ADD(NOW(), INTERVAL -31 DAY) < a.`DATE`
GROUP BY r.`CODE`
ORDER BY RAND()
LIMIT 1
)
So, I have two tables ARTICLE and RUBRIC, a first select return one ARTICLE for each RUBRIC where value of RUBRIC.VIEW is '1'. Second select return one result and i definite manually the last two columns by "BOOK".