gpt4 book ai didi

mysql - 在 MySQL 中使用索引

转载 作者:行者123 更新时间:2023-11-29 08:20:52 25 4
gpt4 key购买 nike

奇怪的事情发生了。谁能解释一下。我有一张 table 。

CREATE TABLE "country_ip" (
"begin_ip" varchar(15) NOT NULL,
"end_ip" varchar(15) NOT NULL,
"begin_ip_long" int(10) unsigned NOT NULL,
"end_ip_long" int(10) unsigned NOT NULL,
"id" char(2) NOT NULL,
"label" varchar(50) NOT NULL,
KEY "begin_ip_long" ("begin_ip_long","end_ip_long"),
KEY "end_ip_long" ("end_ip_long")
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

大约有 150,000 条记录。下一个查询有巨大的时间差

0.06329400 | SELECT * FROM `country_ip` WHERE '1405662435' BETWEEN `begin_ip_long` AND `end_ip_long` LIMIT 1
0.06214600 | SELECT * FROM `country_ip` USE INDEX (begin_ip_long, end_ip_long) WHERE 1405662435 BETWEEN `begin_ip_long` AND `end_ip_long` LIMIT 1
0.00008400 | SELECT * FROM `country_ip` USE INDEX (end_ip_long) WHERE 1405662435 BETWEEN `begin_ip_long` AND `end_ip_long` LIMIT 1

谁能解释一下为什么会发生这种情况?我的意思是为什么只有 USE INDEX (end_ip_long) 有帮助,而使用 USE INDEX (begin_ip_long)USE INDEX (begin_ip_long, end_ip_long) 则没有效果。谢谢。

最佳答案

也许是因为索引 (end_ip_long)(begin_ip_long, end_ip_long) 小,并且它适合内存,并且一列具有足够的选择性。而更大的索引可能需要从磁盘读取。

关于mysql - 在 MySQL 中使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19444189/

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