四大 LOB 類型
| 類型 | 用途 | 最大容量 | 特點 |
| BLOB | 可變長二進制數據 | 4GB | 無字符集轉換,傳輸效率高 |
| CLOB | 可變長字符數據(文本) | 4GB | VARCHAR2 受限 4000 字節,CLOB 無需指定長度 |
| NCLOB | Unicode 字符數據 | 4GB | 存儲多語言字符集數據 |
| BFILE | 外部文件指針(只讀) | 4GB (受 OS 限制) | 數據存儲在數據庫外部,表中僅存指針 |
定義特點
- 均為**可變長度**,**無需指定最大長度**,實際佔用空間隨數據大小動態調整,提高磁盤利用率。
- 與固定長度類型(如 CHAR)不同,不會用空格填充。
最佳實踐建議
- 物理隔離存儲:含 LOB 列的表建議拆分為主表 + LOB 獨立表(通過 PK 關聯),或將 LOB 移至專用表空間。好處:
- 備份/恢復時可單獨處理 LOB 表空間,縮短窗口。
- 避免大對象拖慢全表掃描、影響主表性能。
- 考慮外部文件替代:視頻、圖片等大文件優先存儲於文件系統/對象存儲,數據庫僅存 URL/路徑,應用層超鏈接打開。除非業務要求**同步顯示**(如商品詳情頁自動渲染圖片),否則不建議入庫。
使用限制(重要)
- SQL 子句**不支援** LOB 列:
WHERE、ORDER BY、GROUP BY、DISTINCT、JOIN 條件等均不可直接引用 LOB 列。
- SQL*Plus **無法直接查詢/插入** LOB 數據(報「列或屬性無法通過 SQL*Plus 顯示」),需使用 PL/SQL、OCI、JDBC 等程序化接口操作。
綜上,LOB 類型功能強大但約束較多,架構設計時需權衡業務必要性與維護成本。