php Mysqli use_result限制奇怪

时间:2011-12-02 17:56:47

标签: php mysql mysqli limit

好的,我有一个奇怪的情况

我有一些看起来像这样的代码

public function select($sql, $params = false)
{
    $output = false;

    $this->_query = $this->escapeInto($sql, $params);


    $this->_mysqli->real_query($this->_query);

    $result = $this->_mysqli->use_result();
    return $result;
}

现在我传入以下查询

$this->_query = "SELECT * from bookings  ORDER BY booking_id ASC limit 38500,500";

并且整个函数永远不会返回它将到达函数的末尾,我可以在那里打印调试,但它永远不会返回。

但是,如果我发送任何其他查询,它工作正常。到目前为止,这两项工作和所有500增量都有效。

$this->_query = "SELECT * from bookings  ORDER BY booking_id ASC limit 38501,500";
$this->_query = "SELECT * from bookings  ORDER BY booking_id ASC limit 38500,501";

我对此问题没有任何其他问题,mysqli似乎工作正常 它只是不会退出这个功能。我假设它与mysqli存在问题,但在那里找不到任何类似的问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

当LIMIT大偏移时,mysql几乎肯定需要进行全表扫描来确定顺序,并且通常可以在大表上获得超时。

这几乎是第一次查询时发生的事情。

对于已经放置缓存的后续查询,它将是快速的 (PHP超时不会停止mysql,它仍然在后台处理计算)