SELECT * FROM A WHERE ID = 872918229 --与这个效果差不多吧 SELECT * FROM A WHERE to_number(ID) = 872918229 id是字符串类型,与数字类型进行比较。oracle默认将id先转化为数字型,再进行比较,这样会变慢。另外如果id上有索引,也会失效。
因为int转换成varchar2也是需要一定时间的,SELECT * FROM A WHERE ID = '872918229' 等价于SELECT * FROM A WHERE ID = to_char(872918229)
这里肯定是存在隐式转换!执行计划里的Predicate Information会告诉你什么转成了啥了
--与这个效果差不多吧
SELECT * FROM A WHERE to_number(ID) = 872918229
id是字符串类型,与数字类型进行比较。oracle默认将id先转化为数字型,再进行比较,这样会变慢。另外如果id上有索引,也会失效。