1

全体で 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`
4

1 に答える 1