选择索引列mysql的速度

时间:2015-06-11 17:59:14

标签: mysql sql database performance

我在innodb上有一个拥有4.5百万行的mysql表。

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

urlvarchar(200)

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

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

提前致谢

1 个答案:

答案 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'