DB2 for i5/OS V5R4 引入新連接屬性,允許動態 SQL 接口(CLI、Native JDBC、Toolbox JDBC)程式化控制查詢優化目標。優化目標決定優化器側重「首行響應速度」(FIRSTIO)還是「全表掃描總耗時」(ALLIO)。不同接口預設目標不同,如 Toolbox JDBC 預設 FIRSTIO,Native JDBC 預設 ALLIO。
SQLSetConnectAttr(hdbc, SQL_ATTR_QUERY_OPTIMIZE_GOAL, &attr, 0),屬性值 SQL_FIRST_IO / SQL_ALL_IOquery optimize goal 或 DataSource.setQueryOptimizeGoal(),0=預設(ALLIO)、1=FIRSTIO、2=ALLIO新介面作用於連接層級,利於多線程服務器環境針對不同業務使用不同目標,也便於動態調優策略。
FIRSTIO 如騎自行車,啟動快、適合短途(只需前幾行);ALLIO 如坐飛機,啟動慢但巡航快、適合長途(需全量數據)。理解查詢輸出行為是選擇關鍵。
測試環境:約 1 GB 數據庫,使用 iSeries Navigator SQL Performance Monitor 對比。
OPTIMIZE FOR N ROWS 子句在語句級覆蓋連接級設置