mysql - 不同数据库设计的性能(Google Places API)

标签 mysql database performance google-places-api query-performance

我想知道哪种数据库设计会更有效。在此之前,我的场景是我想使用 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/

相关文章:

java - 如何知道故障原因?

mysql - 我需要选择 mysql 中 uri 中包含三个以上斜杠的所有行

database - ERD图中的继承关系

PHP 无法从数据库下载上传的文件,因为使用中文文件名上传

java - 为什么将 ""附加到字符串可以节省内存?

java - Android onTouchListener Action_Up-MotionEvent 在第一次恢复后延迟

javascript - 如何使用函数绘制高位图?

php - Mysql 将数据存储为数组

mysql - 无法更新记录,卡住

php - 表单数据库设计