我在innodb上有一个拥有4.5百万行的mysql表。
为什么这些(看似我)几乎相同的选择语句之间存在巨大的时差?
url
是varchar(200)
select * from table where url = 12345; take 2.715 seconds
select * from table where url = "12345"; takes 0.000 seconds
提前致谢
答案 0 :(得分:1)
我认为您会发现以下信息具有启发性。
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'
。