是否有可能缩短这些条令查询? $q\u auctions=Doctrine\u Query::create() ->选择('COUNT(t.id)AS num_items') ->from('t') ->其中('t.ends_at>NOW()'); $q_auctions_coming=Doctrine_Query::create() ->选择('COUNT(t.id)AS num_uncoming') ->from('t') ->其中('t.start_at>NOW()'); $q_auctions_closed=Doctrine_Query::create() ->选择('COUNT(t.id)AS num_closed') ->from('t') ->其中('t.ends_at

是否有可能缩短这些条令查询? $q\u auctions=Doctrine\u Query::create() ->选择('COUNT(t.id)AS num_items') ->from('t') ->其中('t.ends_at>NOW()'); $q_auctions_coming=Doctrine_Query::create() ->选择('COUNT(t.id)AS num_uncoming') ->from('t') ->其中('t.start_at>NOW()'); $q_auctions_closed=Doctrine_Query::create() ->选择('COUNT(t.id)AS num_closed') ->from('t') ->其中('t.ends_at,doctrine,Doctrine,我有这3个非常相似的拍卖原则,但我不确定我是否可以缩短它不知何故。我不喜欢重复这么多,所以如果有人能给我一个提示的话。首先,我不会担心这三个查询太多,除非你真的想减少这个页面的查询总数。start_at和end_at上的索引可能有助于加快速度,但这取决于这些表中的记录数 现在唯一想到的是执行一个查询,返回开始和结束日期,然后将PHP foreach循环中的日期解析为您需要的三个组。这将把查询从3降到1,但会增加一些PHP开销。如果你有成百上千的拍卖,这可能不是一个好主意。事实上不是,一页最多30

我有这3个非常相似的拍卖原则,但我不确定我是否可以缩短它不知何故。我不喜欢重复这么多,所以如果有人能给我一个提示的话。

首先,我不会担心这三个查询太多,除非你真的想减少这个页面的查询总数。start_at和end_at上的索引可能有助于加快速度,但这取决于这些表中的记录数


现在唯一想到的是执行一个查询,返回开始和结束日期,然后将PHP foreach循环中的日期解析为您需要的三个组。这将把查询从3降到1,但会增加一些PHP开销。如果你有成百上千的拍卖,这可能不是一个好主意。

事实上不是,一页最多30次拍卖。如果我用PHP做的话会更好吗?@Tool:重要的是数据库中最终会有多少拍卖,因为你会将所有拍卖的开始/结束日期返回给PHP。30个是可以的,但是一年后会有300个封闭式拍卖,几年后会有3000个,等等?在不了解更多应用程序的情况下,我想我应该保留这些查询。
    $q_auctions = Doctrine_Query::create()
       ->select('COUNT(t.id) AS num_items')
       ->from('Auctions t')
       ->where('t.ends_at > NOW()');

    $q_auctions_upcoming = Doctrine_Query::create()
       ->select('COUNT(t.id) AS num_upcoming')
       ->from('Auctions t')
       ->where('t.starts_at > NOW()');

    $q_auctions_closed = Doctrine_Query::create()
       ->select('COUNT(t.id) AS num_closed')
       ->from('Auctions t')
       ->where('t.ends_at < NOW()');