Mysql
用於儲存城市邊界框和名稱的 MySQL 數據庫
我需要設計一個 mysql 數據庫,其中包含一個僅支持單個查詢的城市表 - 給定一個點,返回它所在的城市(或多個城市)。我有每個城市的邊界框。儲存城市邊界框的列應該是什麼樣子才能充分利用 mysql 的空間索引、多個 POINT 列?多邊形?查詢是什麼樣的。
我見過的關於空間索引的大多數討論都涉及逆問題 - 給定一個邊界框,返回具有位於邊界框內的 POINT 列的條目集,他們可以使用 MBRWITHIN 來獲得。
(不是完整的答案,但評論太長了。)
有 200 個帶有“矩形”邊界框的城市,幾乎任何事情都可以。即使是沒有
SPATIAL
索引但帶有INDEX(latitude), INDEX(longitude)
.另一方面,300 萬個城市需要一些認真的索引。
SPATIAL
,正如您所問的那樣,可能是“正確”的方法。這是一種無需
SPATIAL
, usingPARTITIONing
和特殊程式碼的有效方法。(但是,給出的程式碼針對的是不同的問題,所以不能直接適用。)