我有一个大表(InnoDB),它基本上有一个带有位置纬度和经度的位置名称。我的查询类似于
SELECT columns FROM table
WHERE latitude BETWEEN latMin AND latMax
AND longitude BETWEEN longMin AND longMax
AND location LIKE '%mcdonalds%'
唯一的索引是自动递增列的主索引。
我更喜欢使用 InnoDB 所以 FULLTEXT 不是一个选项
我尝试的一个选项是向纬度和经度添加索引,然后做
SELECT id FROM table WHERE
latitude BETWEEN latMin AND latMax
AND longitude BETWEEN longMin AND longMax
然后我做
$stringOfIds = implode(",",$result);
SELECT columns FROM table WHERE id IN ($stringOfIds)
AND location LIKE '%mcdonalds%'
但它的可扩展性不是很好,因为 $result 可以有数千个条目并且占用太多内存
目前,我采用了全表扫描(上面的第一个查询),但每个查询需要 0.5-1 秒,因此我们将不胜感激。
谢谢