mysql对有数据的表分片_如何从没有数字ID的MySQL数据库表中获取随机行?

我有一个分散的

MySQL数据库表分布在许多服务器上,并希望有一个函数来获取随机记录.

我看待它的方式,最好的方法是:

>在(Perl)应用程序层中选择随机分片.

>从该分片上的表中选择一个随机行.

这个问题将集中在解决方案的第2部分.

我的表没有数字ID,我们决定使用GUID以避免必须维护票务服务的开销.我们将GUID与分片标识符结合使用,以确保它们是唯一的.

表是这样的:

guid name details

003-b0470602-a64b-11da-8632-93ebf1c0e05a Aura Some details

到目前为止我提出的最佳答案是由Jack提出的,即:

>计算数据库中的记录数.

>获取介于1和步骤1的结果之间的随机数.

> SELECT * FROM table LIMIT {来自第2步的结果}

>从此(可能非常大)的结果集中获取最后一个结果.

我担心这涉及的处理可能非常大(虽然肯定比ORDER BY RAND()LIMIT 1更好,并且想知道是否有人有更好的解决方案使用非数字标识符.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值