Database query optimization