日期:2014-05-17  浏览次数:20745 次

帮忙解释一个现象
我有个SQL
select   *   from   table   where   column1= '111 '   and   .......

其中column1字段类型是varchar2,这个语句很慢,而改成

select   *   from   table   where   column1=111   and   ....

就很快,请各位解释下这个现象是什么原因,会是因为varchar2有可能使索引失效吗。。。

------解决方案--------------------
这个可能性不大吧,偶尔一次快慢是正常的,
------解决方案--------------------
你的情况,可能是发生在使用索引上. 不知道是否有使用索引.

不管如何, 你可以把两次执行的执行计划show出来看看. 看看是全表扫描了还是使用索引了, 分别比较一下两者的执行成本.
------解决方案--------------------
表都有什么索引,两个语句的执行是怎样的?建议先对表做个分析,更新统计值。
------解决方案--------------------
如果在column1上建有普通索引,column1为varchar时,column1=111不会用索引,而column1= '111 '会用。但如果还有其他条件时,很难说用索引就一定比不用索引快。