我总共有三张表,一张是玩家姓名和他们的最后一次登录,另一张是玩家姓名和他们的 IP。这些来自游戏服务器,但它是服务器的两个独立“插件”,因此我无法将它们合并到一个表中。
我成功地将这两个加入playername
列中,如下所示:
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`