結論:無優先級問題,但需正確使用事務。
TADOConnection,物理連接隔離,Oracle 服務端按提交順序串行化處理。UPDATE ... SET a = a + 1)隱式事務,原子性有保障。Connection.BeginTrans; → 執行多條 SQL → Connection.CommitTrans;(異常時 RollbackTrans)。結論:接口開銷極小,差異通常可忽略;但高頻簡單查詢積少成多,建議優化。
SELECT * FROM dual),網絡往返成主導瓶頸。INSERT ALL ... SELECT * FROM dual、數組綁定、FORALL (PL/SQL) 替換循環單條執行。ConnectionString 中 Pooling=true),避免頻繁建連銷連。EXPLAIN PLAN 分析慢 SQL,添加適當索引、收集統計信息。var
Conn: TADOConnection;
Qry: TADOQuery;
begin
Conn := TADOConnection.Create(nil);
Conn.ConnectionString := '...'; // 含 Pooling=true
Conn.LoginPrompt := False;
Conn.Connected := True;
Conn.BeginTrans;
try
Qry := TADOQuery.Create(nil);
Qry.Connection := Conn;
Qry.SQL.Text := 'UPDATE accounts SET balance = balance - :amt WHERE id = :id';
Qry.Parameters.ParamByName('amt').Value := 100;
Qry.Parameters.ParamByName('id').Value := 123;
Qry.ExecSQL;
// 更多 SQL...
Conn.CommitTrans;
except
Conn.RollbackTrans;
raise;
end;
Conn.Connected := False;
Conn.Free;
end;