gpt4 book ai didi

oracle - 在Oracle中选择更高的时间戳精度有什么缺点?

转载 作者:行者123 更新时间:2023-12-03 14:36:44 27 4
gpt4 key购买 nike

Oracle 允许指定 TIMESTAMP 的精度type in a table - SECOND 小数部分的位数日期时间字段。指定最大精度有什么缺点吗TIMESTAMP(9) ?

我能想到的一个原因是,这些信息可能会被 Oracle 工具用于更漂亮的输出。

最多 9 位数字表明该字段存储为 4 字节整数,因此它不应该有任何性能影响,如果我在这里错了,请更正。

最佳答案

没有缺点,如果有意义,请使用 timestamp(9)。

Timestamp(9) 和 timestamp(1) 使用相同数量的空间,并且它们的性能是相同的。我只能找到一种存在性能差异的情况,在这种情况下,timestamp(9) 实际上比 timestamp(1) 快。

(我会省去你插入时间戳(1)和时间戳(9)列并比较不同的许多无聊代码行
对它们进行操作。)

这表明它们使用相同数量的空间(插入许多值并比较 dba_segments):

--Create tables with timestamps and populate them with the same data (with different precision)
--Set initial and next to a low value so we can closely check the segment size)
create table timestamp1 (t1 timestamp(1), t2 timestamp(1), t3 timestamp(1), t4 timestamp(1), t5 timestamp(1))
storage(initial 65536 next 65536);

insert into timestamp1
select current_timestamp(1), current_timestamp(1), current_timestamp(1), current_timestamp(1), current_timestamp(1)
from dual connect by level <= 100000;

create table timestamp9 (t1 timestamp(9), t2 timestamp(9), t3 timestamp(9), t4 timestamp(9), t5 timestamp(9))
storage(initial 65536 next 65536);

insert into timestamp9
select current_timestamp(9), current_timestamp(9), current_timestamp(9), current_timestamp(9), current_timestamp(9)
from dual connect by level <= 100000;


--Segment size is identical
select segment_name, bytes from dba_segments where segment_name in ('TIMESTAMP1', 'TIMESTAMP9');

--SEGMENT_NAME BYTES
--TIMESTAMP1 8388608
--TIMESTAMP9 8388608

这是使用 current_timestamp 时 timestamp(9) 更快的地方,您可能需要在某些时候使用它来生成数据。但我们只讨论在我的慢速桌面上生成 100K 时间戳的 0.175 和 0.25 秒之间的差异。我不确定为什么 timestamp(9) 更快,也许时间戳总是生成为 timestamp(9) 然后四舍五入到其他精度?
--current_timestamp(9) is slightly faster than current_timestamp(1)
select count(*) from
(
select *
from dual
--where current_timestamp(9) = current_timestamp(9)
where current_timestamp(1) = current_timestamp(1)
connect by level <= 100000
);

编辑:性能差异存在于 10g 而不是 11g。

关于oracle - 在Oracle中选择更高的时间戳精度有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3900557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com