Очевидно потому что при таком синтаксисе запроса, вот эта часть
SELECT COUNT(`statistic`.`id`) FROM `statistic` WHERE `statistic`.`pid` = `products`.`id`
будет выполняться 10000 раз
Вот так должно быть быстрее
UPDATE `products` p
INNER JOIN (SELECT COUNT(*) as cnt, `statistic`.`pid` FROM `statistic` GROUP BY `statistic`.`pid`) as sta ON p.`id` = sta.`pid`
SET p.`statistic` = sta.`cnt`