ITPub博客

首页 > 数据库 > Oracle > [20241205]truncate table and index.txt

[20241205]truncate table and index.txt

原创 Oracle 作者:lfree 时间:2024-12-05 21:11:28 0 删除 编辑

[20241205]truncate table and index.txt

--//链接给出一个例子,https://connor-mcdonald.com/2024/12/04/kris-kringle-the-database-truncate-and-indexes/
--//truncate table后unusable的索引自动生效。测试看看。

1.环境:
SCOTT@book01p> @ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.测试:
SCOTT@book01p> create table t as select * from all_objects;
Table created.

SCOTT@book01p> create index i_t_object_id on t(object_id);
Index created.

SCOTT@book01p> @ ind2 t
Display indexes where table or index name matches t...
TABLE_OWNER          TABLE_NAME                     INDEX_NAME                     POS# COLUMN_NAME                    DSC
-------------------- ------------------------------ ------------------------------ ---- ------------------------------ ----
SCOTT                T                              I_T_OBJECT_ID                     1 OBJECT_ID

INDEX_OWNER          TABLE_NAME                     INDEX_NAME                     IDXTYPE    UNIQ STATUS                         PART TEMP  H     LFBLKS           NDK   NUM_ROWS       CLUF LAST_ANALYZED       DEGREE VISIBILIT
-------------------- ------------------------------ ------------------------------ ---------- ---- ------------------------------ ---- ---- -- ---------- ------------- ---------- ---------- ------------------- ------ ---------
SCOTT                T                              I_T_OBJECT_ID                  NORMAL     NO   VALID                          NO   N     2        155         69968      69968       3547 2024-12-05 15:46:29 1      VISIBLE

SCOTT@book01p> alter index I_T_OBJECT_ID unusable;
Index altered.

SCOTT@book01p> @ ind2 I_T_OBJECT_ID
Display indexes where table or index name matches I_T_OBJECT_ID...

TABLE_OWNER          TABLE_NAME                     INDEX_NAME                     POS# COLUMN_NAME                    DSC
-------------------- ------------------------------ ------------------------------ ---- ------------------------------ ----
SCOTT                T                              I_T_OBJECT_ID                     1 OBJECT_ID

INDEX_OWNER          TABLE_NAME                     INDEX_NAME                     IDXTYPE    UNIQ STATUS                         PART TEMP  H     LFBLKS           NDK   NUM_ROWS       CLUF LAST_ANALYZED       DEGREE VISIBILIT
-------------------- ------------------------------ ------------------------------ ---------- ---- ------------------------------ ---- ---- -- ---------- ------------- ---------- ---------- ------------------- ------ ---------
SCOTT                T                              I_T_OBJECT_ID                  NORMAL     NO   UNUSABLE                       NO   N     2        155         69968      69968       3547 2024-12-05 15:46:29 1      VISIBLE
--//STATUS=UNUSABLE.

SCOTT@book01p> truncate table t;
Table truncated.

SCOTT@book01p> @ ind2 I_T_OBJECT_ID
Display indexes where table or index name matches I_T_OBJECT_ID...

TABLE_OWNER          TABLE_NAME                     INDEX_NAME                     POS# COLUMN_NAME                    DSC
-------------------- ------------------------------ ------------------------------ ---- ------------------------------ ----
SCOTT                T                              I_T_OBJECT_ID                     1 OBJECT_ID


INDEX_OWNER          TABLE_NAME                     INDEX_NAME                     IDXTYPE    UNIQ STATUS                         PART TEMP  H     LFBLKS           NDK   NUM_ROWS       CLUF LAST_ANALYZED       DEGREE VISIBILIT
-------------------- ------------------------------ ------------------------------ ---------- ---- ------------------------------ ---- ---- -- ---------- ------------- ---------- ---------- ------------------- ------ ---------
SCOTT                T                              I_T_OBJECT_ID                  NORMAL     NO   VALID                          NO   N     2        155         69968      69968       3547 2024-12-05 15:46:29 1      VISIBLE

--//可以发现truncate table t;后索引自动变为VALID。

SCOTT@book01p> @ sl all
alter session set statistics_level = all;
Session altered.

SCOTT@book01p> select count(*) from t;
  COUNT(*)
----------
         0
1 row selected.

SCOTT@book01p> @ dpc '' '' ''
PLAN_TABLE_OUTPUT
--------------------------------------
SQL_ID  cyzznbykb509s, child number 0
-------------------------------------
select count(*) from t
Plan hash value: 3095383276
-------------------------------------------------------------------------------------------------------------------------
| Id  | Operation             | Name          | Starts | E-Rows | Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |
-------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |               |      1 |        |    45 (100)|          |      1 |00:00:00.01 |       4 |
|   1 |  SORT AGGREGATE       |               |      1 |      1 |            |          |      1 |00:00:00.01 |       4 |
|   2 |   INDEX FAST FULL SCAN| I_T_OBJECT_ID |      1 |  69968 |    45   (3)| 00:00:01 |      0 |00:00:00.01 |       4 |
-------------------------------------------------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
   1 - SEL$1
   2 - SEL$1 / "T"@"SEL$1"
--//object_id字段为not null,可以发现使用索引。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3054859/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969284