现场:
select * from t1 where t1.a=0
select * from t1 where t1.a='0'
问题:为什么结果是一样的。如果数据量大效率是否一样。
2 个解决方案
#1
oralce有自动的类型转换功能,比如t1.a='0',因为a列为number类型,所以这时候oracle会判断字符串‘0’是否能转换为number类型,如果可以,则自动转换,且如果存在索引,不影响索引的使用。
一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0
一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0
#2
#1
oralce有自动的类型转换功能,比如t1.a='0',因为a列为number类型,所以这时候oracle会判断字符串‘0’是否能转换为number类型,如果可以,则自动转换,且如果存在索引,不影响索引的使用。
一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0
一般数据量(百万、千万)两种写法的执行效率应该没有什么差别,因为都可以正常使用索引,如果感兴趣可以试试超大数据量的,不过考虑到代码规范,最好进行写成t1.a=0