Après une nuit de sommeil, j'ai trouvé la solution suivante.
set @p = GeomFromText('POINT(23.923739342824817 38.224714465253733)');
select municipalID FROM ecovis.municipal_border
where ST_Contains(municipal_border.boundary, @p);
Cela fonctionne pour MySQL 5.6.1 où préfixe ST_ fonction ont été implémentées. Bien que je n'aie pas de mesures d'une approche classique (algorithme de rayons X), je pense que c'est assez rapide. Il faut 0,17 seconde pour localiser un point dans 2 700 polygones, certains polygones ayant bien plus de 1 500 points.