wow weird, refining this query to try to put my finger on the symptom, I get this:
SELECT 40775 AS reference_ID, ID, ROUND(0 + (MATCH (post_content) AGAINST ('solar cabbage brassicas caterpillars farms panels beneficial may plants butterflies chemical glucobrassicin eggs fields increase insects insect wildlife offer damaged')) * 1 ) AS score
FROM blog_posts left join blog_term_relationships as terms on ( terms.object_id = blog_posts.ID )
WHERE post_status IN ( 'publish', 'static' )
AND post_password =''
AND post_type IN ('post')
AND blog_posts.ID IN ( 33706, 33720)
GROUP BY ID
HAVING score >= 2.000000
AND ID != 0
AND bit_or(terms.term_taxonomy_id IN (792,15,4612,1354,791,9)) = 0 and COUNT(DISTINCT IF( terms.term_taxonomy_id IN (919,920), terms.term_taxonomy_id, null )) >= 1
ORDER BY score DESC;
old server:
40775 33720 68
40775 33706 2
new server:
40775 33706 101
40775 33720 101