我想知道哪种数据库设计会更有效。在此之前,我的场景是我想使用 google place api 进行搜索。 API 将返回城市、州、国家/地区,并且我有与这些数据相关的列表。
列表和位置之间会有多对多
第一次尝试:
Location Table
-id
-city
-states
-country
例如:
City | States | Country
A | B | C
D | B | C
E | F | G
当我通过 google API 搜索并返回响应时,我将检查表格并搜索城市、州和国家/地区列。因此,这 3 列将被索引。
第二次尝试:
Location Table
-id
-parent_id
-name
所以,这就像层次结构。所以基本上,如果我尝试搜索列表,如果它在国家/地区,我将不得不查询子项(州),然后从子项中,我需要再次查询以获取特定子项(城市)以获取所有我认为该列表将包含更多涉及的查询?
那么,当数据增长时,用于搜索表的最佳数据库设计是什么?使用 Google Places API 时有什么建议的数据库设计吗?
最佳答案
我以前遇到过这个问题,并尝试了很多选择,最适合我的一个是制作 3 张表:城市、地区和国家。
countries [id,name]
zones [id,country_id,name]
cities[id,country_id,zone_id,name]
首先查询Countries表(只有190行,速度非常快)
SELECT id FROM countries WHERE name LIKE 'Spain';
之后,您可以使用country_id 来查询区域表,以限制比较的字符串数量。
SELECT id FROM zones WHERE country_id = {Your country id} AND name LIKE 'Leon';
最后查询城市
SELECT name FROM cities WHERE country_id = {Your country id} AND zone_id = {Your zone id} AND name LIKE 'Villabúrbula';
关于mysql - 不同数据库设计的性能(Google Places API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684008/