@Johan 我不确定自从发布这个问题以来是否进行了优化,但对20k+行进行的EXPLAIN显示,使用RANDOM()排序键和任何其他列作为排序键(例如rating)的成本相同。 - Chris Cirefice
@ChrisCirefice,如果“rating”列的基数较小(或未建立索引),则其成本将相同,因为只有在条件正确时才能使用索引。没有更多细节,我就只能说这些了。 - Johan
3@Johan 好观点!我创建了一个[SQLFiddle](http://sqlfiddle.com/#!15/80065/6)来演示 ORDER BY 语句的一些性能差异。 结果表明,按主键排序最快,其次是按索引排序。然后,按任何未被索引的字段排序会显著增加成本。但是,ORDER BY RANDOM() 与按非索引列排序的速度差异不大(至少对于 250k 行)。不过,如果测试数百万行,则结果可能大不相同... 我没有测试那么多。 - Chris Cirefice
EXPLAIN
显示,使用RANDOM()
排序键和任何其他列作为排序键(例如rating
)的成本相同。 - Chris CireficeORDER BY
语句的一些性能差异。 结果表明,按主键排序最快,其次是按索引排序。然后,按任何未被索引的字段排序会显著增加成本。但是,ORDER BY RANDOM()
与按非索引列排序的速度差异不大(至少对于 250k 行)。不过,如果测试数百万行,则结果可能大不相同... 我没有测试那么多。 - Chris Cirefice