DB_FILE_MULTIBLOCK_READ_COUNT × 块大小,受限于 OS 最大 I/O 大小。即使仅需 1 行,Oracle 也会将该行所在块整块读入内存。
DELETE 不降低 HWM,全表扫描时间不变。TRUNCATE 重置 HWM 至 0,后续 FTS 极快。ALTER TABLE ... SHRINK SPACE 在线收缩 HWM。| 场景 | 建议 | 理由 |
|---|---|---|
| 小表 (≤ 数千块) | ✅ 首选 FTS | 索引开销大于顺序读 |
| 大表,需访问 > 5%-10% 行 | ✅ FTS 更优 | 多块读吞吐 > 单块随机读 |
| 大表,需访问 < 2% 行 | ❌ 避免 FTS | 索引范围扫描 + ROWID 回表更快 |
| 并行查询 (PQ) | ✅ 强制 FTS | PQ 仅支持全表/分区扫描 |
EXPLAIN PLAN FOR SELECT * FROM DUAL;
-- PLAN_TABLE_OUTPUT
-------------------------------------------------
| Id | Operation | Name | Cost |
-------------------------------------------------
| 0 | SELECT STATEMENT | | 1|
| 1 | TABLE ACCESS FULL | DUAL | 1|
-------------------------------------------------
TABLE ACCESS FULL 即标识 FTS。
EXPLAIN PLAN FOR SELECT * FROM DEPT WHERE ROWID = 'AAAAyGAADAAAAATAAF';
-- Operation: TABLE ACCESS BY ROWID
-- 单块读,最快定位单行,但不支持多块读
一句话总结:FTS 是顺序多块读,适合大比例数据访问与并行查询;小比例精准查找请走索引 + ROWID。