您好,我有一个涉及通过IP查找归属地的问题想咨询在DorisDB中怎么设计表结构并解决。
数据库:mysql 5.7 有二张表结构如下: CREATE TABLE `ip_range_for_region_name` ( `ip_start_inet_aton` int(10) unsigned COMMENT '开始IP段,把开始IP转换成了正整形', `ip_end_inet_aton` int(10) unsigned COMMENT '结束IP段,把结束IP转换成了正整形', `country` varchar(255) DEFAULT NULL COMMENT '国家', `province` varchar(255) DEFAULT NULL COMMENT '省份', `city` varchar(255) DEFAULT NULL COMMENT ‘城市', KEY `idx_ ip_range_for_region_name_1` (`ip_start_inet_aton`), KEY `idx_ip_range_for_region_name_2` (`ip_end_inet_aton`) ) COMMENT ‘IP段对应的区域名称'; CREATE TABLE `ip_address` ( `log_base_ip` int(10) unsigned COMMENT ‘IP地址,转换成了正整形', `country` varchar(32) COMMENT ‘对应的国家', `province` varchar(32) COMMENT ‘对应的省份', `city` varchar(32) COMMENT '对应的城市', KEY `idx_ ip_address` (`log_base_ip`) ) COMMENT ‘IP地址’; 执行如下语句时走的cross join,都是进行了ip_range_for_region_name全表的扫描查询,执行效率很低: UPDATE ip_address t2 INNER JOIN ip_range_for_region_name t1 ON t1.ip_start_inet_aton <= t2.log_base_ip AND t1.ip_end_inet_aton >= t2.log_base_ip SET t2.country = t1.country, t2.province = t1.province, t2.city = t1.city; 想知道如何可以进行优化操作???请给予解答。