私はいくつかのipの都市を見つけるためにmaxmindデータベースを使用しようとしています。 (http://www.maxmind.com/app/geolitecity) 2つのテーブルがあります
第1表の列:
startIpNum、endIpNum、LOCID
第2表の列:
LOCID、国、地域、都市、postalCodeの、緯度、経度、metroCode、areaCode
クイック説明: 最初のテーブルを使用してテーブルの位置IDを取得し、次にそのテーブルの情報を2番目のテーブルから取得できます。さて、プロセスの第2部分について忘れてみましょう。最初の部分を達成するために、私はmysqlを使用してlocIdを取得するために次のコードを使用します。 IPは、* 256 * 256 * 256 + B * 256 * 256 + C * 256 + IP =からD(> ABCD、例えば197.248.67.1であるMaxmindから都市へ - mysqlのインデックス
SELECT locId FROM first_table WHERE startIpNum<=IP and endIpNum>=IP LIMIT 1
、= 197、B = 248 ..これは、整数間の比較について話していることを意味します。 問題がありますが、この操作は遅すぎます。私の第二の考えは、インデックスを使用していたので、私はこのようにインデックスを使用しようとしました:
CREATE INDEX test ON first_table (startIpNum,endIpNum,locId)
たぶんそれは、世界の最高の指標ではありませんが、私はそれは私の問題に対する最善の解決策だと思った...とまあ...そうではありません。このプロセスはまだ10秒ほど遅いです。何か案は???? ところで、この表にはおよそ3.5百万行があります。しかし、私はオペレーターがそれ以下であるという問題を知っていますが、他に何ができるのか分かりません。 ありがとうございます。
は6百万のように、私はmysql GISでそれを行うことができることを発見したので、数日後に作業を進めていきます... – silgon