我收到了一个使用distinct关键字的SQL查询。当我尝试运行查询时,花了至少一分钟的时间将具有数十万条记录的两个表联接起来,并实际上返回了一些东西。
然后,我取出了与众不同的东西,它在0.2秒后又回来了。独特关键字真的会使事情变糟吗?
编辑:这是查询
SELECT Distinct c.username, o.orderno, o.totalcredits, o.totalrefunds, o.recstatus, o.reason from management.contacts c join management.orders o on (c.custID = o.custID)
是的,因为使用DISTINCT遗嘱(有时根据评论)会导致对结果进行排序。对数百条记录进行排序需要花费时间。
DISTINCT
尝试GROUP BY所有列,它有时可能会导致查询优化器选择更有效的算法(至少在Oracle中,我注意到显着的性能提升)。
GROUP BY