我正在开发一个程序(基于 Web 的 PHP、MySQL DB),其中包括世界各地所有城市的数据库,包含 250 万个条目(全部在一个表中)。当我尝试从中获取详细信息时,服务器(假设为 localhost,wamp)花了很多时间来搜索和获取数据。我在互联网上搜索以找到使用如此大数据的最乐观方法。我认为,一种方法是将此表缩小为每个国家/地区的不同表,以使搜索过程更容易。
谁能建议如何处理这个问题并分享知识?
编辑:该表包括两列。1. country
2. city
. 我用户WHERE country=XX
使搜索过程更容易,但需要很长时间才能处理。
数据库:(表名cities
:)
country city
US Lakewood Estates
US Lakewood Estates Mobile Home Park
US Lakewood Falls
US Lakewood Forest
US Lakewood Gardens
US Lakewood Harbor
US Lakewood Heights
US Lakewood Highlands
US Lakewood Hills
.
.
.
PHP代码:
$data = mysql_query( "SELECT * FROM cities where country='".mysql_real_escape_string($_GET['country'])."' ORDER BY country" )
or die( mysql_error() );
$i = 0;
while( $row = mysql_fetch_array( $data )){
if ( strpos( strtolower( $row['city'] ), $q ) !== false ) {
$i++;
$arr[] = $row['city'];
if ($i==10) {break;}
}
}
echo "[";
for ($x=0; $x<count($arr); $x++)
{
echo '{"name":"'.$arr[$x].'"}';
if ($x!=count($arr)-1) {echo ',';}
}
echo "]";