暂无图片
数据库INTEGER字段严重跳号,导致数据溢出
我来答
分享
只此无云
2020-05-11
数据库INTEGER字段严重跳号,导致数据溢出
暂无图片 10M

版本:Oracle 11.2.0.4.0-----64bit

问题:表中id列字段类型为integer

发现数据溢出,检查已达到该字段最大值21亿多。

统计该表,数据只有2000多万

发现一亿中只有几万或者几千条数据,哪位大佬指点下该怎么查找个解决这个问题?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
只此无云

问题解决了:不是用的序列。是一个定时任务导致的,里面一个判断写错了,遇到错误就陷入死循环了。处理了就正常了。

暂无图片 评论
暂无图片 有用 0
暂无图片
只此无云

SELECT COUNT(*)

FROM T_XXX_SSS

WHERE N_ID > 1800000000

ABND N_ID < 1900000000;

# 根据这样统计,发现实际只有不到8万条数据

# N_ID为主键列,字段类型为INGETER

暂无图片 评论
暂无图片 有用 0
你好我是李白

字段值插入数据时通过什么计算出来的呢?序列还是什么?

暂无图片 评论
暂无图片 有用 0
吾亦可往

首先,您可以尝试使用以下方法来查找数据:

  1. 使用SQL查询语句进行筛选。例如,如果您知道某些特定的条件,可以使用WHERE子句来过滤结果集。例如,如果您知道某个id大于1000万,则可以使用以下查询语句:
        

sql复制代码

SELECT * FROM table_name WHERE id > 10000000;

  1. 使用索引来加速查询。如果您的表中包含id列,那么您可能需要创建一个索引来加快查询速度。例如,您可以使用以下语句创建一个B-tree索引:
        

sql复制代码

CREATE INDEX index_name ON table_name(id);

  1. 检查您的应用程序代码是否正确处理了数据溢出的情况。如果您的应用程序在处理数据时出现了错误,可能会导致数据溢出。您可以检查您的代码并确保它正确地处理了这种情况。

如果以上方法都无法解决问题,您可能需要考虑重新设计您的数据库架构。例如,您可以考虑将id列的数据类型更改为更大的类型,例如bigint或decimal(n)。或者,您可以考虑使用分区表或其他技术来管理大量数据。

暂无图片 评论
暂无图片 有用 1
只此无云
题主
2023-07-11
谢谢
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏