在索引列 MySQL 上选择速度



我在 innodb 上有一个 mysql 表,有 450 万行。

为什么这些(在我看来)几乎相同的选择语句之间存在巨大的时差?

url varchar(200)

select * from table where url = 12345;  take 2.715 seconds
select * from table where url = "12345"; takes 0.000 seconds

提前致谢

我想你会发现以下信息很有启发性。

https://bugs.mysql.com/bug.php?id=32308

http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html

值得注意的是,文档明确指出(强调我的):

为了比较字符串列与数字,MySQL无法使用列上的索引来快速查找值。如果 str_col 是索引字符串列,则在以下语句中执行查找时不能使用该索引:

SELECT * FROM tbl_name WHERE str_col=1;

这样做的原因是有许多不同的字符串可以转换为值1,例如'1'' 1''1a'

最新更新