帮忙解释一个现象
我有个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 '会用。但如果还有其他条件时,很难说用索引就一定比不用索引快。