数据库中数据很多 如果想要根据日期进行优化 该怎么做?

数据库中数据很多 如果想要根据日期进行优化 该怎么做?,第1张

对于时间敏感的数据,建议按一定的期限,如一年,半年等进行划分,

把一年以前的划分到一个表结构相同的历史表里面去。如果数据库支持分区表的话也可以按时间对表进行分区。

但是从表结构来看,我感觉你这张表也不是很大,一条完整的数据也不过100个字节,只要建立合适的索引,速度也不会很慢。

CREATE TABLE lineitem(l_orderkey DECIMAL(10,0) NOT NULL, l_cpartkey INTEGER, l_suppkey INTEGER, l_linenumber INTEGER, l_quantity DECIMAL(12,2), l_extendedprice DECIMAL(12,2), l_discount DECIMAL(12,2), l_tax DECIMAL(12,2), l_returnflag CHAR(1), l_linestatus CHAR(1), l_shipdate DATE, l_commitdate DATE, l_receiptdate DATE, l_shipinstruct CHAR(25), l_shipmode CHAR(10), l_comment VARCHAR(44)) PARTITION BY RANGE(l_shipdate) (STARTING MINVALUE, STARTING '1/1/2000' ENDING '31/12/2020' EVERY 1 YEAR(按月就是 MONTH), ENDING MAXVALUE)

代码简单就是你复制的那样

具体的实现方式就是

在你ORD_ACT_PART01 分区中,要存放日期小于2003年5月1号的数据,也就是存放2003年4月的,以及以前的所有

ORD_ACT_PART02 分区中存放2003年5月的数据,但是因为之前有了2003年4月的存放在分区1里,所以这里只存放5月的了,后边也类似

但是你这个吧,只建了3个分区,到存放7月的数据,就会提示插入错误了,因为你没有存放7月的分区,所以只能再建,语法就是跟楼上那些人写的差不多了

ALTER TABLE

ORDER_ACTIVITIES

ADD PARTITION ORD_ACT_PART04 VALUES LESS THAN

(TO_DATE('01-AUG-2003','DD-MON-YYYY')) TABLESPACE ORD_TS04

不过建议起名时最好p200301,p200302这样的一目了然


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6751016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存