【问题标题】:reverse a mysql resource反转一个mysql资源
【发布时间】:2012-04-29 00:17:48
【问题描述】:
//get the messages from the database
$messagesID_query = mysql_query("SELECT
                                   messageID,
                                   posterID,
                                   messageTime,
                                   message
                                 FROM
                                   chat_messages
                                 ORDER BY
                                   messageTime DESC
                                 LIMIT
                                   20");

上面的 mysql_query 从表中返回最新的 20 个条目。但是,理想情况下,我需要在获取行之前反转资源。

目前,我运行 2 个循环: 1 - 一个获取 php 数组中的所有结果 2 - 然后另一个处理数组以在反转后打印。

我正在尝试优化它的工作方式...是否可以在我开始获取行之前反转 mysql 资源,这样我就不必反转 php 中的数组?

或者,有没有一种方法让我忽略了重写查询以以相反的顺序返回所述行..但仍然像上面那样获得最新的 20 个结果?

【问题讨论】:

    标签: php mysql resources reverse


    【解决方案1】:

    这最好在查询中完成。将整个内容包装在一个子查询中,然后按messageTime 将其重新排序为升序。这可以节省数据库服务器上相当多的 CPU 资源,而不是循环调用mysql_data_seek() 以在比您的 20 更大的行集上向后获取行。

    SELECT * FROM 
    (
      SELECT
        messageID,
        posterID,
        messageTime,
        message
      FROM
      chat_messages
      /* Subquery is used to get the most recent 20 by messageTime */
      ORDER BY messageTime DESC
      LIMIT 20
    ) subq
    /* Reorder the result of the subquery to put them back into ascending order */
    ORDER BY messageTime ASC
    

    【讨论】:

    • 太棒了!我不知道子查询..解决了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多