The answer probably lies in the indexes; please provide
* SHOW CREATE TABLE tbl\G -- engine, indexes
* SHOW TABLE STATUS LIKE 'tbl'\G -- sizes
* EXPLAIN SELECT ...\G -- clues of inefficiencies
* SHOW VARIABLES LIKE '%buffer%'; -- cache size
and surround them with [ code ] and [ / code ]
What is "[PercentExtend]" ??
Your queries, cleaned up a bit:
SELECT v.PointId,
Sum((100-[PercentExtent]))/523 AS Weight,
Count(*) AS SppCount
FROM sppmodelvalues v
INNER JOIN spphistograms h
ON (v.SppId = h.SppId)
AND (v.Prob = h.Prob)
WHERE v.SppId > 0 -- the No-op
GROUP BY v.PointId;
I would hope for indexes on both tables of (SspId, Prob) or (Prob, SspId).
sppmodelvalues might benefit from INDEX(SspId, Prob, PointId)