MySQL SQL查询的隐式转换的性能问题

黄平俊 发布于 2010/05/04 10:10
阅读 1K+
收藏 1

场景:表stat_usage_of_school中定义了一字段为district_code 类型 varchar(20),并在此字段加上索引。

使用T-SQL查询:

S1、SELECT * FROM stat_usage_of_school WHERE district_code='4401'  LIMIT 330

S2、SELECT * FROM stat_usage_of_school WHERE district_code=4401  LIMIT 330

S1执行后的效果:

http://www.itsmile.net

S2执行后的效果:

http://www.itsmile.net

 

S1的SQL并没有用到district_code的索引查询,而S2是有用上索引的查询。stat_usage_of_school表数据量在1 百万条时,S1的执行时间:1.953秒,而S2的执行时间是:0.031秒!可见MySQL中的隐式转换,特别是在代码中如果传递的参数类型不一致,且 程序执行不出错时,这种隐式转换的SQL一旦放在立品环境中,一旦数据量上来,它的性能瓶颈就极易出现且极难发现~~~

转自:http://www.itsmile.net/blog/article_show/20/273577/MySQL-query-implicit-conversion

加载中
0
james_you
james_you

你确信你没有写反了结论?

返回顶部
顶部