Oracle 8i Advanced 4: Understanding the Optimizer