在数据库查询过程中,使用order by null 强制实现对结果禁用排序。如果查询的结果的顺序不重要,可以采用order by null。特别是用group by 分组查询。在无order by null通过EXPLAIN 查看语句性能的时候,可以看到Extra列多了Using filesort,严重影响了性能。
例如:
SELECT
MAX(tr.AddTime) AS l_a_time,
tr.TermId AS ID
FROM
termcoupon_relationship AS tr,
term AS t
WHERE tr.TermId = t.ID
AND tr.Status = 'online'
AND t.Status = 'active'
AND t.IsSuperTerm != 'yes'
AND t.CountryCode = 'DE'
GROUP BY TermId
HAVING l_a_time < '2016-01-03' order by null
MAX(tr.AddTime) AS l_a_time,
tr.TermId AS ID
FROM
termcoupon_relationship AS tr,
term AS t
WHERE tr.TermId = t.ID
AND tr.Status = 'online'
AND t.Status = 'active'
AND t.IsSuperTerm != 'yes'
AND t.CountryCode = 'DE'
GROUP BY TermId
HAVING l_a_time < '2016-01-03' order by null
本文介绍了一种在数据库查询中使用orderbynull来禁用排序的方法,这种方法尤其适用于group by分组查询,在不需要特定顺序的情况下提高查询效率。
1343

被折叠的 条评论
为什么被折叠?



