美文网首页技术干货程序员
Mysql随机查询N条数据

Mysql随机查询N条数据

作者: 良人与我 | 来源:发表于2019-03-18 17:49 被阅读88次

如果id 是 数组

可以参考 mysql 手册给的 demon
http://www.mysqltutorial.org/select-random-records-database-table.aspx

如果id 不是数字,比如字符串

CREATE TABLE `card_collect` (
  `id` char(36) NOT NULL,
  `card_id` char(36) NOT NULL,
  `user_id` char(36) DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `index_card_collect_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

随机找10条数据

SELECT *
FROM 
(
    SELECT ROUND(RAND() * (
            SELECT COUNT(id)
            FROM card_collect
        )) AS random_num
    FROM card_collect
    LIMIT 10
)  as b 
INNER JOIN 
 (
        SELECT @rowid := @rowid + 1 AS rowid, aa.id
        FROM card_collect aa, (
                SELECT @rowid := 0
            ) init
    )  as c 
on 
 b.random_num = c.rowid

结果


image.png

数据库中有5W数据
Time: 0.161s

通过代码分多步实现

当数据量大的时候还是推荐此方法

SELECT COUNT(t.id)
from card_collect t;

得到总数后,通过 j程序方法 算出 页和size

SELECT t.id , t.user_id
from card_collect t
limit 7000,10;

但是此方法拿到的是一页内 连续的数据

测试下来
Time: 0.036
性能好了很多。

相关文章

  • Mysql随机查询N条数据

    如果id 是 数组 可以参考 mysql 手册给的 demonhttp://www.mysqltutorial.o...

  • python批量操作mysql

    工具 mysql基本操作 #mysql没有top的用法,查询前N条需要用limit python批量操作mysql...

  • 数据库操作

    数据库扩展 PHP数据库操作之查询分页数据 limit m,n // 从第m+1条开始,查询n条数据$page =...

  • MySQL 高效随机查询一条数据

    https://mp.weixin.qq.com/s/_BT4pyf89aKQfJ5GAO6ALg 查看公众号内容...

  • SQL查询近期数据

    mysql查询时间的数据: 解释: 1.(mysql查询今天的数据) 2.(mysql查询昨天的数据) 3.(以当...

  • 从0到1学习网络安全 【MySQL基础-MySQL 查询数据】

    MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据。你可以通过 mysql> 命令提示...

  • 数据库

    mysql引擎: 执行查询时,若要查询的数据很多,假设要查询1000 万条,用什么方法提升效率?答案:1)从数据库...

  • MySQL查询缓存

    简介: mysql通过查询缓存优化来优化查询效率,当执行相同的一条sql时,mysql会将数据缓存起来以供下...

  • elasticsearch http postman 查询数据

    查询数据,默认显示10条 查询数据,可指定size,显示N条 关键字检索 关键字检索,&并且关系 关键字检索,or...

  • mysql---随机获取10%的数据

    mysql---随机获取10%的数据 最近在研究从某张表中随机获取百分之十的数据,查询各大网站,基本上都使用的是...

网友评论

    本文标题:Mysql随机查询N条数据

    本文链接:https://www.haomeiwen.com/subject/pszemqtx.html