En långsam version (utan rumsliga index):
SELECT *
FROM mytable
WHERE MBRIntersects(mypolygon, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
För att använda de rumsliga indexen måste du avnormalisera din tabell så att varje polygonpunkt lagras i sin egen post.
Skapa sedan SPATIAL INDEX
på fältet som innehåller koordinaterna för hörnen och ställ bara den här frågan:
SELECT DISTINCT polygon_id
FROM vertices
WHERE MBRContains(vertex, LineString(Point(@X - @distance, @Y - @distance), Point(@X + @distance, @Y + @distance))
Sakerna blir mycket lättare om du lagrar UTM
koordinater i din databas snarare än latitud och longitud.