mysql - 如何通过 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.
我的表如下所示:
我怎样才能加快这个查询?
解决方案
将 SELECT * 替换为 SELECT 并列出您实际需要的字段。目前您正在返回不需要的字段,例如 ip_from 和 ip_to
推荐阅读
- excel - 使用Text函数在excel中将1K,1M转换为1000,1000 000并转换为数字
- mysql - 在库存数据库系统中保存产品数量的最佳实践是什么
- nginx - 在 mac 上使用 brew 命令安装特定版本的 nginx
- reactjs - 警告:列表中的每个孩子都应该有一个唯一的“关键”道具。“渲染登录”
- asp.net-mvc-5 - Asp.Net MVC 5 未找到文件扩展 .data 和 .wasm
- python - 向张量流张量添加维度
- c# - .Net Core MVC 应用与 IdentityServer4,使用 Azure Active Directory 登录。管理员同意和权限问题
- python - 如何使用python从身份证中提取数据
- sql - 如何按条件选择最大值?
- http-headers - Erlang Cowboy如何为静态文件添加响应头