私は、世界中のすべての都市のデータベースを 250 万エントリ (すべて 1 つのテーブルに) 含むプログラム (Web ベースの PHP、MySQL DB) を開発しています。そこから詳細を取得しようとすると、サーバー(ローカルホスト、ワンプを想定)がデータを検索して取得するのに非常に時間がかかりました。このような大規模なデータを使用する最も楽観的な方法を見つけるために、インターネットを検索しました。1 つの方法は、検索プロセスを容易にするために、このテーブルを国ごとに異なるテーブルに縮小することだと思います。
誰かがこれを処理して知識を共有する方法を提案できますか?
編集: テーブルには 2 つの列が含まれています。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 "]";