diff --git a/hive/utils/stats.py b/hive/utils/stats.py
index 1ea5ffdae955235a6fe07392a6c03caaf64a39a6..b949343099797f4f3d4b0c037fc343c52b176236 100644
--- a/hive/utils/stats.py
+++ b/hive/utils/stats.py
@@ -1,6 +1,5 @@
 """Tracks SQL timing stats and prints results periodically or on exit."""
 
-import re
 import atexit
 import logging
 
@@ -9,10 +8,15 @@ from hive.utils.system import colorize, peak_usage_mb
 
 log = logging.getLogger(__name__)
 
-def _normalize_sql(sql):
-    nsql = ' '.join(sql[0:512].split())[0:256]
-    nsql = re.sub(r'VALUES (\s*\([^)]+\),?)+', 'VALUES (...)', nsql)
-    return nsql
+def _normalize_sql(sql, maxlen=150):
+    """Collapse whitespace and middle-truncate if needed."""
+    out = ' '.join(sql.split())
+    if len(out) > maxlen:
+        i = int(maxlen / 2 - 4)
+        out = (out[0:i] +
+               ' . . . ' +
+               out[-i:None])
+    return out
 
 def log_query_stats(fn):
     """Decorator for hive.db.adapter::query()"""
@@ -71,7 +75,7 @@ class StatsAbstract:
         log.info('%7s %9s %9s %9s', '-pct-', '-ttl-', '-avg-', '-cnt-')
         for call, ms, reqs in self.table(40):
             log.info("% 6.1f%% % 7dms % 9.2f % 8dx -- %s",
-                     100 * ms/self._ms, ms, ms/reqs, reqs, call[0:150])
+                     100 * ms/self._ms, ms, ms/reqs, reqs, call)
         self.clear()