php - 包含国家、地区、城市的注册表 - 如何管理 200 万条 mySQL 记录?

标签 php jquery mysql ajax codeigniter

我正在使用 PHP 框架 CodeIgniter 创建一个 Web 应用程序。该应用依赖于有关用户国家、地区和城市的正确信息。

我目前有一个带有国家/地区下拉框(从数据库填充)、区域下拉框(根据国家/地区使用 ajax 填充)和城市下拉框(根据国家和地区使用 ajax 自动完成的 jquery 自动完成)的注册表单).

我的问题是城市数据库有超过 200 万个条目,自动完成速度相当慢。我在其他地方看到过这种事情,例如。位置自动完成速度更快的 Facebook 事件。

我的问题是,是否有任何方法可以加快此过程(优化 mySQL 数据库、ajax 调用)以使其更快,或者是否有其他方法可以使用 Google Maps API 之类的东西来完成此过程?

任何意见/意见/想法表示赞赏。

以下是我的表的基本定义:

City:
countryid, char(2)
country, varchar(100)

Region:
countryid, char(2)
regionid, varchar(2)
regionName, varchar(50)

City:
cityid, int
countryid, char(2)
regionid, varchar(2)
asciName, varchar(100)
isoName, varchar(200)
population, int
long, float
lat, float

我使用 ISO 标准列表来填充国家和地区表,并使用免费提供的城市数据库来填充城市表。

最佳答案

我会使用 www.geonames.org,它会为数据返回 json。

示例用法:

http://ws.geonames.org/searchJSON?name_startsWith=San&country=US

返回:

{"totalResultsCount":12101,"geonames":[{"countryName":"United States","adminCode1":"AL","fclName":"city, ....

不需要从您自己的数据库中提取此类数据。

关于php - 包含国家、地区、城市的注册表 - 如何管理 200 万条 mySQL 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123186/

相关文章:

php - 我如何使用全文,例如 Like

php - 将最不可能的匹配项分组 - MySQL

JavaScript 验证 - document.getElementById 在 Bootstrap 模式中不起作用

Javascript:在没有 eval 的情况下使用函数名称从 String 调用用匿名函数编写的函数?

javascript - 如何使用 javascript 从文件中获取图像尺寸(高度、宽度)

mysql - 选择时在 MySQL 中解析 JSON

php - 使用 jQuery .load() 传递参数并调用 php 函数

javascript - 谁能告诉我为什么 8>7<6 = 真?

php - 如何在正确的 'Codeigniter way' 中编写此 SQL 查询?

mysql - 多次执行 mysql "in"的最佳方法