Fix #4395
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php
index e92c570..c180a17 100644
--- a/system/database/DB_query_builder.php
+++ b/system/database/DB_query_builder.php
@@ -1379,7 +1379,16 @@
 			$this->from($table);
 		}
 
-		$result = ($this->qb_distinct === TRUE OR ! empty($this->qb_orderby))
+		// ORDER BY usage is often problematic here (most notably
+		// on Microsoft SQL Server) and ultimately unnecessary
+		// for selecting COUNT(*) ...
+		if ( ! empty($this->qb_orderby))
+		{
+			$orderby = $this->qb_orderby;
+			$this->qb_orderby = NULL;
+		}
+
+		$result = ($this->qb_distinct === TRUE)
 			? $this->query($this->_count_string.$this->protect_identifiers('numrows')."\nFROM (\n".$this->_compile_select()."\n) CI_count_all_results")
 			: $this->query($this->_compile_select($this->_count_string.$this->protect_identifiers('numrows')));
 
@@ -1387,6 +1396,11 @@
 		{
 			$this->_reset_select();
 		}
+		// If we've previously reset the qb_orderby values, get them back
+		elseif ( ! isset($this->qb_orderby))
+		{
+			$this->qb_orderby = $orderby;
+		}
 
 		if ($result->num_rows() === 0)
 		{