sorry, found the problem...
i tested the query
select * from  test.a where a =2 and b in
(select a as a from test.a)
union
select * from  test.a where a =2 and b in
(select a as a from test.a)
but it was not cached, i put the SQL_CACHE and i found it in query cache =]
very nice =)