Does your plugin use extra tables other than wp meta ?
Yes, but it should be transparent and all original data is still stored in the regular meta tables.
WP-GeoMeta creates wp_postmeta_geo, wp_usermeta_geo, wp_termmeta_geo and wp_commentmeta_geo. These tables have a meta value column of type GEOMETRYCOLLECTION.
When you or a plugin save postmeta (or other types of meta), WP-GeoMeta checks the meta value is GeoJSON, and if so, saves a copy of the data in MySQL’s geometry format.
Later when you query postmeta (or another type of meta), WP-GeoMeta detects if you’re using a spatial function, and if so, it alters the query to fetch that data from the appropriate *meta_geo table.
Because the original/source data is still stored in postmeta, WP-GeoMeta shouldn’t affect any other plugins or where data is stored. It also means that if something goes wrong, the *meta_geo tables can be rebuilt from the original data in the postmeta table.
Any benchmarks for millions of points ?
I’m afraid not. I suspect that querying for points within 1km of a central point will be faster with WP-GeoMeta than with a custom haversine formula on the postmeta table.
WP-GeoMeta takes advantage of MySQL’s spatial indexes, which should make the ST_INTERSECTS query much faster than alternatives. However, I haven’t run any benchmarks so I can’t be sure.