我有一个包含大量信息的数据库,用户可以使用PHP查询这些信息来与MySQL数据库通信。我也想把他们的结果限制在最多300个,我已经成功地做到了。但是,我也希望按数据集名称对结果进行排序。是否有一种方法来排序结束查询,而不是原始表?根据我在网上看到的内容,查询中的ORDER语句对整个表进行排序,然后对查询进行排序(或类似的操作),这样会更有效,因为您只对15条记录进行排序,而不是1500000条。如果有帮助,我会使用以下语法将结果打印到页面:
while ($row = mysql_fetch_array($result)) {
...
}谢谢
发布于 2015-03-25 13:38:12
若要创建子表,并且只能对其进行排序,可以尝试如下所示:
Select * from ( QUERY limit 300) a order by COLUMN发布于 2015-03-25 13:26:16
如果结果集有限,请将其保存到php数组中,然后使用php排序函数:http://php.net/manual/en/function.usort.php
$all = array();
while ($res = mysql_fetch_array($result)) {
$all[] = $res;
}
usort($all, function($a,$b) {
return $a['field'] < $b['field'];
});发布于 2015-03-25 13:29:54
只需确保您正在排序的有一个不错的索引和排序选项应该非常快。在限制之前/之后排序的问题是,如果可能的话(按照逻辑对组进行一点排序),它将改变实际的结果,而不是它们返回的顺序。
https://stackoverflow.com/questions/29256904
复制相似问题