【SQL开源代码栏目提醒】:网学会员,鉴于大家对SQL开源代码十分关注,论文会员在此为大家搜集整理了“15.2.3.1.sql”一文,供大家参考学习!
--消除表中迁移或链接的行
--1. 使用ANALYZE语句去收集有关行迁移和行链接的信息
ANALYZE TABLE order_hist LIST CHAINED ROWS;
--2.
查询输出的表:
SELECT *
FROM CHAINED_ROWS
WHERE TABLE_NAME = 'ORDER_HIST';
--3.如果输出的表显示出大量迁移或链接的行,那么需要通过连续执行下面的步骤来消除存在迁移的行。
--4.创建一个中间的表,该表与存在行迁移或行链接表具有相同的表结构,并将所有存在行迁移或行链接的记录复制到中间表中。
CREAE TABLE int_order_hist
AS SELECT *
FROM order_hist
WHERE ROWID IN
(SELECT HEAD_ROWID
FROM CHAINED_ROWS
WHERE TABLE_NAME = 'ORDER_HIST')
--5.删除现有表中迁移和链接的行:
DELECT FROM order_hist
WHERE ROWID IN
(SELECT HEAD_ROWID
FROM CHAINED_ROWS
WHERE TABLE_NAME = 'ORDER_HIST');
--6.将中间表中的行插入到现有的表中:
INSERT INTO order_hist
SELECT *
FROM int_order_hist;
--7.删除中间表:
DROP TABLE int_order_hist;
--8.删除输出表中在第1步收集的信息:
DELETE FROM CHAINED_ROWS
WHERE TABLE_NAME = 'ORDER_HIST';