gpt4 book ai didi

mysql - 为什么不使用mysql ORDER BY RAND()?

转载 作者:可可西里 更新时间:2023-11-01 07:31:30 25 4
gpt4 key购买 nike

我看到很多网站说不要使用 ORDER BY RAND(),例如 http://forge.mysql.com/wiki/Top10SQLPerformanceTips所以我运行了一个测试,我测试了 20k 记录表的速度和性能,其中 10k 记录有 username="username":

SELECT username FROM testingspeed WHERE username='username' ORDER BY RAND();

结果:

Showing rows 0 - 29 (10,000 total, Query took 0.0119 sec).
id = 1
select_type = SIMPLE
table = testingspeed
type = ref
posible_keys = username
key = username
key_len = 32
ref = const
rows = 3225
Extra = Using where; Using index; Using temporary; Using filesort

既然执行查询只用了0.0119秒,应该是非常不错的速度了,为什么还有人说不要用ORDER BY RAND()?为什么只有 3225 行受到影响?为什么不影响 10,000 行?

最佳答案

ORDER BY RAND() 的问题在于,正如您的解释告诉您“使用临时”和“使用文件排序”。对于每个请求,都会创建一个临时表并对其进行排序。这是一个相当繁重的操作。当您的数据库负载不重时,这可能无关紧要,但会消耗大量性能。

关于mysql - 为什么不使用mysql ORDER BY RAND()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com