开发者社区 > 数据库 > 数据仓库 > 正文

adb,sql中用 ORDER BY RAND()随机,巨慢, 1.4亿数据量,order by r

adb,sql中用 ORDER BY RAND()随机,巨慢, 1.4亿数据量,order by rand() 6条数据,60多秒才出来结果,有什么办法解决吗?

展开
收起
cuicuicuic 2023-04-27 08:08:58 193 0
2 条回答
写回答
取消 提交回答
  • 对于ORDER BY排序AnalyticDB MySQL会把数据缓存到内存中。如果需要排序的数据量较大,就会占用较多内存。这个需要提供下相关SQL的查询ID,需要具体分析下慢的原因,此回答整理自钉群“云数据仓库ADB-开发者群”

    2023-04-27 17:53:05
    赞同 展开评论 打赏
  • ORDER BY RAND()随机排序需要对所有数据进行排序,对于数据量大的情况下,性能会受到很大的影响。对于1.4亿数据量的情况,建议使用其他方式进行随机排序,例如:

    1. 使用分页查询实现随机:可以在WHERE条件中添加随机雷达,然后使用LIMIT语句分页查询。

    2. 对数据表添加索引:在某些情况下,创建索引可以加快排序的速度。例如,根据字段创建索引,然后使用ORDER BY查询,可以有效地提高查询速度。

    3. 数据分片:将数据分成多个分片,分别查询,然后合并结果。这种方式可以分散查询压力,提高查询效率。

    4. 使用随机函数:一些数据库提供了随机函数,例如MySQL的rand函数、Oracle的dbms_random函数等,可以直接使用这些函数随机查询。

    2023-04-27 10:25:19
    赞同 展开评论 打赏

相关产品

  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 热门讨论

    热门文章

    相关电子书

    更多
    SQL Server 2017 立即下载
    GeoMesa on Spark SQL 立即下载
    原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载