全体で 3 つのテーブルがあり、1 つはプレーヤー名と最後のログイン、もう 1 つはプレーヤー名と IP です。これらはゲーム サーバーからのものですが、サーバーの 2 つの個別の「プラグイン」であるため、これらを 1 つのテーブルにマージすることはできません。
playername
次のように、これら 2 つを列に正常に結合します。
SELECT
u.`user` as `ign`,
lb.`lastlogin` as `date`,
lb.`ip`
FROM `mcmmo_users` u
LEFT JOIN `lb-players` lb
ON u.`user`=lb.`playername`
これらは次の配列を生成します。Array(ign,date,ip);
ただし、IP2C (IP-Country) テーブルもあり、これらの結果を同時に取得したいと考えています。ただし、このテーブルは非常に大きいため、標準の LEFT JOIN を実行すると、クエリの速度が大幅に低下します。
これに参加するより速い方法はありますか?データのすべての PHP ループに対してクエリを実行するのは避けたいと思います。
MySQLとPHPを使用しています
IP2C データベースは次のように構成されています。
begin_ip | end_ip | begin_ip_num | end_ip_num | country_code | country_name
そして、次のように照会されます。
$IPNUM = sprintf("%u",ip2long($ip));
SELECT `country_code`
FROM `cpanel_ip2c`
WHERE `$IPNUM` BETWEEN `begin_ip_num` AND `end_ip_num`