问题1.数据是否未成功插入指定分区?因为我需要删除指定的分区,所以我需要确保插入到指定分区必须成功,尽管num_rows在user_tab_partitions中为0。
问题2.我在谷歌上搜索了一些想法,有些人说我需要分析这个表格。为什么要分析?
问题3.如果我分析这个表,它的性能会与不分析它不同吗?
PARTITION BY RANGE ( CYCLE_MTH ) INTERVAL ( numtoyminterval(1,'MONTH') )
(
PARTITION per_limra_p004
VALUES LESS THAN ( TO_DATE('01-11-2015','DD-MM-YYYY') ),
PARTITION per_limra_p003
VALUES LESS THAN ( TO_DATE('01-12-2015','DD-MM-YYYY') ),
PARTITION per_limra_p002
VALUES LESS THAN ( TO_DATE('01-01-2016','DD-MM-YYYY') ),
发布于 2018-07-13 14:32:51
NUM_ROWS
显示了基于上次分析的行数,因此不应该依赖它。我建议对此进行统计。
SELECT COUNT(*)
FROM your_table PARTITION FOR (DATE '2016-04-01')
或
SELECT COUNT(ROWNUM)
FROM your_table PARTITION FOR (DATE '2016-04-01')
WHERE ROWNUM <= 1
它应该比DBMS_STATS.GATHER_TABLE_STATS
快得多(如果您有此表中的任何索引)
发布于 2018-07-16 02:26:47
根据您添加到问题中的分区信息,答案是明确的。原因是
SELECT COUNT() FROM per_limra PARTITION FOR (DATE '2015-06-01')
和
SELECT COUNT() FROM per_limra PARTITION FOR (DATE '2015-05-01')
它们都返回1,它们都在查看相同的分区。您的三个分区是
PARTITION per_limra_p004
VALUES LESS THAN ( TO_DATE('01-11-2015','DD-MM-YYYY'), i.e. less than 01-Nov-2015
PARTITION per_limra_p003
VALUES LESS THAN ( TO_DATE('01-12-2015','DD-MM-YYYY'), i.e. less than 01-Dec-2015
PARTITION per_limra_p002
VALUES LESS THAN ( TO_DATE('01-01-2016','DD-MM-YYYY'), i.e. less than 01-Jan-2016
查询中的日期是DATE '2015-06-01'
,或01-6月-2015,或DATE '2015-05-01'
,或01-5-2015年5月,这两种日期都属于分区per_limra_p004
的范围,该分区包含01至2015年11月之前所有日期的数据。因此,两个查询都从同一个分区返回数据,这就是它们返回相同值的原因。
祝你好运。
https://stackoverflow.com/questions/51327420
复制相似问题