Mysql

如果我主要使用 innodb,如何獲得空間索引功能?

  • February 26, 2013

我目前的策略是在 myisam 中創建另一個包含這些空間資訊的表。然後,如果我想找到 20 個最近的企業,我將使用 join。

這是一個好主意嗎?

我這樣做的方法是添加另一個包含緯度和經度的 myisam 表。然後將原表的ID設置為輔助表的ID。當我抬頭時,我確實加入了。

SELECT DISTINCT
 TB.ID,
 TB.Latitude,
 TB.Longitude
FROM
 TableBusiness AS TB
 TableAuxiliary as TA on TA.BusinessID=TB.ID
WHERE
 //bla bla bla do some spatial thingy here
LIMIT
 0, 20

但是,myisam 空間索引非常令人失望。

我什至不能進行最近鄰搜尋。至少沒有辦法只用一個 mysql 命令來做到這一點。我必須嘗試一個小矩形,然後使矩形越來越大。

如果有,請告訴我它是什麼。

使用 MyISAM 可能是您最好的也是唯一可以使用空間索引的賭注。您可以考慮將數據儲存在 InnoDB 表中,然後根據需要將數據連續或批量導出到 myisam 表中。然後使用 myisam 表進行查詢。

如果數據很重要,我不會相信 myisam 作為儲存引擎。

好像你自己想出了解決方案。

引用自:https://dba.stackexchange.com/questions/19306