最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
sql order by rand随机数据优化与性能对比
时间:2022-11-14 23:37:18 编辑:袖梨 来源:一聚教程网
测试环境
apache2.2/php5.2/mysql5
测试数据
15W+数据,数据表大小600MB
测试语句
最初使用的是 order by rand()了,发现几万条数据居然要10秒之长的时间很是悲剧吧
代码如下 | 复制代码 |
SELECT * FROM `表名` order by rand() |
显示行 0 - 29 (154,825 总计, 查询花费 10.1125 秒)
后来网上搜索到如下方法,同样数据感觉有很大的提高了(这里测试的是15W数据)
代码如下 | 复制代码 |
SELECT * FROM 表名 WHERE id >= ((SELECT MAX(id) FROM 表名)-(SELECT MIN(id) FROM 表名)) * RAND() + (SELECT MIN(id) FROM 表名) LIMIT 10 |
显示行 0 - 29 (154,825 总计, 查询花费 0.0221 秒)
感觉不错了,有朋友说用join可能更好,于时找了一段代码测试一下查询花费 0.0025 秒,又提供了几倍呀。
代码如下 | 复制代码 |
SELECT * |
显示行 0 - 9 (10 总计, 查询花费 0.0025 秒)
最后还可以优化一下
代码如下 | 复制代码 |
SELECT s_url,title |
显示行 0 - 9 (10 总计, 查询花费 0.0008 秒)
总结一下,我们如果用同样的方法在字段选择时越少越好,这不从0.0025直接降到0.0008秒了哦。
相关文章
- 崩坏星穹铁道折纸鸟为什么那么大成就怎么达成 折纸鸟为什么那么大成就攻略 03-28
- 崩坏星穹铁道上座率零成就怎么达成 崩坏星穹铁道上座率零成就攻略 03-28
- 射雕梁子翁喜欢礼物线索有哪些 射雕梁子翁喜欢礼物线索一览 03-28
- 射雕郭靖喜欢礼物线索有哪些 射雕郭靖喜欢礼物线索一览 03-28
- 少年三国志二吕布怎么获得 03-28
- 逆水寒手游背水饮刀怎么获得 逆水寒手游背水饮刀获取攻略 03-28