summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-06-22 17:04:11 +0200
committerLukas Fleischer <archlinux@cryptocrack.de>2011-06-25 11:29:55 +0200
commit3c110b13b591308cb42767c9cdf7262c11ea3778 (patch)
treea619aee53e4d6bb354a909f64ae46af7f7ee86f4
parentc0e6aabeb13487e798c6b3e54926e3362dcc2773 (diff)
downloadaur-3c110b13b591308cb42767c9cdf7262c11ea3778.tar.gz
aur-3c110b13b591308cb42767c9cdf7262c11ea3778.tar.xz
Use sane ORDER BY clauses in package list queries
We were doing some silly things here with an "ORDER BY Name, CategoryID" clause, due to the fact that Name is unique, and thus any additional ordering after Name will have no effect. Of course, the dumb as a box of rocks MySQL query optimizer doesn't realize this, leading to full table scans every time of ~30000 packages instead of using index scans for the ordering and only retrieving the first 50 rows. The biggest change is noted in the default sort order as it cuts down the columns to one, but we can remove the redundant sort from other orderings as well, even though those will still not be able to use an index-driven query plan. Signed-off-by: Dan McGee <dan@archlinux.org> Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r--web/lib/pkgfuncs.inc.php8
1 files changed, 4 insertions, 4 deletions
diff --git a/web/lib/pkgfuncs.inc.php b/web/lib/pkgfuncs.inc.php
index 46768f2b..8cd1c611 100644
--- a/web/lib/pkgfuncs.inc.php
+++ b/web/lib/pkgfuncs.inc.php
@@ -472,23 +472,23 @@ function pkg_search_page($SID="") {
$order = (isset($_GET["SO"]) && $_GET["SO"] == 'd') ? 'DESC' : 'ASC';
- $q_sort = "ORDER BY Name ".$order.", CategoryID DESC ";
+ $q_sort = "ORDER BY Name ".$order." ";
$sort_by = isset($_GET["SB"]) ? $_GET["SB"] : '';
switch ($sort_by) {
case 'c':
$q_sort = "ORDER BY CategoryID ".$order.", Name ASC ";
break;
case 'v':
- $q_sort = "ORDER BY NumVotes ".$order.", Name ASC, CategoryID DESC ";
+ $q_sort = "ORDER BY NumVotes ".$order.", Name ASC ";
break;
case 'w':
if ($SID) {
- $q_sort = "ORDER BY Voted ".$order.", Name ASC, CategoryID DESC ";
+ $q_sort = "ORDER BY Voted ".$order.", Name ASC ";
}
break;
case 'o':
if ($SID) {
- $q_sort = "ORDER BY Notify ".$order.", Name ASC, CategoryID DESC ";
+ $q_sort = "ORDER BY Notify ".$order.", Name ASC ";
}
break;
case 'm':