### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
select(cls)
            .with_hint(cls, "USE INDEX (idx_dag_run_running_dags)", dialect_name="mysql")
            .where(cls.state == state, cls.run_type != DagRunType.BACKFILL_JOB)
            .join(DagModel, DagModel.dag_id == cls.dag_id)
            .where(DagModel.is_paused == false(), DagModel.is_active == true())
        )
        if state == DagRunState.QUEUED:
            
            
            running_drs = (
                select(DagRun.dag_id, func.count(DagRun.state).label("num_running"))
                .where(DagRun.state == DagRunState.RUNNING)
                .group_by(DagRun.dag_id)
                .subquery()
            )
            query = query.outerjoin(running_drs, running_drs.c.dag_id == DagRun.dag_id).where(
                func.coalesce(running_drs.c.num_running, 0) < DagModel.max_active_runs
            )
        query = query.order_by(
            nulls_first(cls.last_scheduling_decision, session=session),
            cls.execution_date,
        )
        if not settings.ALLOW_FUTURE_EXEC_DATES:
            query = query.where(DagRun.execution_date <= func.now())
        return session.scalars(
            with_row_locks(query.limit(max_number), of=cls, session=session, **skip_locked(session=session))
        )
    @classmethod
    @provide_session
    def find(