gpt4 book ai didi

mysql - 优化sql查询

转载 作者:行者123 更新时间:2023-11-29 14:28:39 25 4
gpt4 key购买 nike

我正在尝试优化 SQL 查询,该查询现在需要大约 20 秒才能执行。

这是我的表格的结构。

last_login

id | ip_address |when
1 2130706433 2012-05-04 12:00:36

country_by_ip

ip_from | ip_to | country
16843008 | 16843263 | CN

这是我使用的查询:

SELECT 
ll.ip_address,
ll.when,
cbi.country
FROM last_login ll
LEFT JOIN `country_by_ip` cbi on ll.ip_address BETWEEN cbi.ip_from AND cbi.ip_to

字段 ip_from 和 ip_to 已建立索引。

你能推荐我如何加快这个查询吗?

//编辑

CREATE TABLE `last_login` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip_address` int(11) unsigned NOT NULL,
`when` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=32 DEFAULT CHARSET=utf8


CREATE TABLE `country_by_ip` (
`ip_from` int(20) unsigned NOT NULL,
`ip_to` int(20) DEFAULT NULL,
`country` varchar(255) DEFAULT NULL,
KEY `ip_from` (`ip_from`),
KEY `ip_to` (`ip_to`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

EXPLAIN EXTENDED

最佳答案

怎么样:

SELECT 
ll.ip_address,
ll.when,
cbi.country
FROM last_login ll
LEFT JOIN `country_by_ip` cbi on ll.ip_address > cbi.ip_from
WHERE ll.ip_address < cbi.ip_to

但是,我完全同意@Romain,更改数据库架构以实现更好的设计。

关于mysql - 优化sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com