首页 > 解决方案 > 如何通过 IP 地址查询加快国家检测速度?

问题描述

我正在尝试使用此服务中的地理位置 ip db:

https://lite.ip2location.com/database/ip-country-region-city

我将 csv 文件导入我的 mysql 数据库。现在我的表有2,716,854 行。我的查询很慢。

我的表 sql:

CREATE TABLE `ip2location_db3`(
    `ip_from` INT(10) UNSIGNED,
    `ip_to` INT(10) UNSIGNED,
    `country_code` CHAR(2),
    `country_name` VARCHAR(64),
    `region_name` VARCHAR(128),
    `city_name` VARCHAR(128),
    INDEX `idx_ip_from` (`ip_from`),
    INDEX `idx_ip_to` (`ip_to`),
    INDEX `idx_ip_from_to` (`ip_from`, `ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

我的查询:

SELECT *
FROM `ip2location_db3`
WHERE ip_from <=1598483915
AND ip_to >=1598483915

平均查询时间:

1.3627 seconds.

我的表如下所示:

在此处输入图像描述

我怎样才能加快这个查询?

标签: mysql

解决方案


将 SELECT * 替换为 SELECT 并列出您实际需要的字段。目前您正在返回不需要的字段,例如 ip_from 和 ip_to


推荐阅读