下面两次查询表,用不同的sql相同的逻辑(就是在theday限制稍有差别),但是查出来结果确是不一样的
已经可以确定表的数据没有变化(theday的类型是NUMBER(8) 表里面userid肯定有索引 theday似乎也有)
请问
有什么情况会导致出现这种奇怪的事情呢select /*+parallel (a, 4)*/ eboxid,amt,souce,month,theday from chglog a where SOUCE in(0,1) and userid=5912114 and theday=20101001;AMT SOUCE MONTH THEDAY
--- ----- ------------ ----------
39 1 20101000 20101001
30 1 20101000 20101001 2 rows selected.
==================================
select /*+parallel (a, 4)*/ eboxid,amt,souce,month,theday from chglog a where SOUCE in(0,1) and userid=5912114 and theday like '20101001%';AMT SOUCE MONTH THEDAY
---- ----- ------------ ----------
1700 0 20100900 20101001
833 0 20100900 20101001
39 1 20101000 20101001
30 1 20101000 20101001 4 rows selected.============
应该不是并行的影响,我去掉并行查出来结果也一样
已经可以确定表的数据没有变化(theday的类型是NUMBER(8) 表里面userid肯定有索引 theday似乎也有)
请问
有什么情况会导致出现这种奇怪的事情呢select /*+parallel (a, 4)*/ eboxid,amt,souce,month,theday from chglog a where SOUCE in(0,1) and userid=5912114 and theday=20101001;AMT SOUCE MONTH THEDAY
--- ----- ------------ ----------
39 1 20101000 20101001
30 1 20101000 20101001 2 rows selected.
==================================
select /*+parallel (a, 4)*/ eboxid,amt,souce,month,theday from chglog a where SOUCE in(0,1) and userid=5912114 and theday like '20101001%';AMT SOUCE MONTH THEDAY
---- ----- ------------ ----------
1700 0 20100900 20101001
833 0 20100900 20101001
39 1 20101000 20101001
30 1 20101000 20101001 4 rows selected.============
应该不是并行的影响,我去掉并行查出来结果也一样
解决方案 »
- 临时表空间问题
- 急::oracle监听程序不支持服务,怎么解决???
- 关于oracle数据库的同步问题
- oracle客户端连接时报ora-12560 tns 协议适配器错误 重启后正常 急!跪求!
- Oracle还原的问题
- 雙網卡機器上一個網卡不能連接數據庫,監聽器出錯
- 在linux8上安装oracle9.2.0.1.0最後创建数据库向导时一闪退出了,该怎么自己创建数据库啊?
- OCP的12本认证资料,名称各为什么?价钱如何?简单介绍?对初学者有用吗?
- 在win2000下如何访问安装在redhat7.3上的ORACLE8.1.7 数据库?
- ORACLE-你是英雄你来挑战
- 急!!!ORACLE数据库DBF数据文件恢复问题!
- Orcle查询问题
833 0 20100900 20101001
这两条纪录里的20101001 可能含有空格--这样看看结果是什么
select /*+parallel (a, 4)*/ eboxid,amt,souce,month,theday from chglog a where SOUCE in(0,1) and userid=5912114 and trim(theday)=20101001;
一般出现这种情况都是由于存在空格,或者事务的读写不一致导致的,
也就是说其他session会话在你两次操作之间改变了表里数据你真的能确定表中数据没有变化?
其他session会不会insert了SOUCE=0 的两条数据呢?
我甚至有怀疑是不是索引导致的,因为如果theday有索引 两个查询肯定是一个用上索引 另一个用不上但是网上又找不到说索引会影响查询结果的说法 更不知道如果是这种情况怎么解决
select /*+parallel (a, 4)*/ eboxid,amt,souce,month,theday
from chglog a
where SOUCE in(0,1) and userid=5912114 and trim(theday)=20101001;
AMT SOUCE MONTH THEDAY LENGTH(THEDAY
---- ----- ------------ ---------- ---------------
1700 0 20100900 20101001 8
833 0 20100900 20101001 8
39 1 20101000 20101001 8
30 1 20101000 20101001 8
1 length返回8 并且字段是number(8)类型
2 我特意圈选了一下 20101001后面是没有字符的