大多數情況下,我們需要避免SQL在查詢時進行全表掃描(FTS),但是對於必須需要進行全表掃描的情況,也可以進行一些優化處理。
即使全表掃描是檢索所需數據的唯一可行方法,仍然有多種方法來提升查詢性能。優化掃描的技術包括:
1、 通過讓表變小來減少掃描所需的邏輯塊讀取的數量
2、 通過提高數據庫IO的效率降低掃描所需要的物理塊讀取的數量
3、 通過緩存或抽樣降低掃描開銷
4、 通過使用並行查詢選項為掃描分配更多的資源
5、 執行快速全索引掃描來替代全表掃描
6、 對表進行分區,只讀取所選擇的分區中的數據
特別地,需要完成全表掃描的工作量主要取決於需要掃描的數據塊的數量。有很多方法可以減少這個數量。可能需要在進行表設計時,進行合理的估算,然后進行優化設計方面的考慮:
1、 通過重建表來降低HWM (高水位)。
2、 通過修改PCTFREE或者PCTUSED參數向每個塊中塞入更多的記錄 (請了解pctfree 和pctused 的相關知識)。
3、 減少記錄長度,可能是通過將大的且並不經常訪問的列遷移到獨立的表中
4、 壓縮表中的數據。
