`
kongshanxuelin
  • 浏览: 925535 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

mySQL随机取数据的执行效率

阅读更多

昨晚我在编写“路过的”的应用随机取笑话的时候发现一个问题,我的目标是从笑话表(大约几万条数据量)中随机抽取一条笑话并显示,起初我的SQL如下:

select * from xiaohua limit 随机数,1

 

其中随机数是由java程序产生,当随机数比较小时,发现执行速度非常快,但当随机数如超过1w时,执行速度超慢,看来这条路是行不通了,于是我又利用mysql的rand()函数,看看执行效率,发现效率也不好,最后我通过google了一下,发现碰到这个问题的人还是很多的,最终的SQL如下(速度超过),可到http://l.faqee.com/的查看笑话看执行速度:

SELECT t1.id as id,title,content,class_name,class_id,hits FROM xiaohua AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM xiaohua )-(SELECT MIN(id) FROM xiaohua ))+(SELECT MIN(id) FROM xiaohua )) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;

 

 备忘一下!

4
1
分享到:
评论

相关推荐

    MySQL 随机函数获取数据速度和效率分析

    在实际测试中,后者的执行效率通常优于前者。 需要注意的是,这些优化策略适用于具有自增ID的表,并且ID范围较大的情况。对于没有自增ID或者ID范围较小的表,可能需要采用其他方法。此外,MySQL 4.1及以上版本才...

    mysql-random-data-generator:这是最简单MySQL随机测试数据生成器工具。 加载过程并执行以自动检测列类型并加载数据

    通过调用这些过程,用户可以便捷地将生成的随机数据插入到MySQL表中。 4. **测试数据的重要性**:在软件开发和数据库管理中,测试数据至关重要。它可以确保系统在不同数据条件下表现正常,有助于找出潜在的问题和...

    Shell脚本批量添加CSV数据到MySQL

    本篇将详细介绍如何使用Shell脚本结合CSV文件批量将数据导入MySQL数据库,以提高工作效率。 首先,`prov.csv` 是一个包含CSV(逗号分隔值)格式的数据文件,这种文件类型常用于存储表格数据,易于读写和处理。在本...

    MySQL查询随机数据的4种方法和性能对比

    在MySQL数据库中,查询随机数据是一项常见的需求,但如何高效地实现这一操作却是一门学问。本文将探讨四种不同的方法,并进行性能对比。 首先,我们来看最直观但也效率最低的方法——方案一: ```sql SELECT * FROM...

    MySql分组后随机获取每组一条数据的操作

    补充知识:在MySQL中,随机选取多条数据也有多种方法,但效率各不相同。以下列举了六种常见的方法: 1. 直接使用`RAND()`函数: ```sql SELECT * FROM tablename ORDER BY RAND() LIMIT 想要获取的数据条数; ```...

    MYSQL 随机 抽取实现方法及效率分析

    代码如下:请教怎么从数据库随机读出15条记录? order by rand() limit 0,15 怎么从数据库随机读出所有记录? order by rand() 但是,...查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。

    Mysql构造百万条测试数据

    这里创建了一个存储过程 `add_vote_memory`,该存储过程用于生成随机数据。该存储过程使用了 WHILE 循环和 INSERT 语句来生成数据。 4. 调用存储过程: 知识点:在 MySQL 中,可以使用 CALL 语句调用存储过程。...

    MYSQL随机抽取查询 MySQL Order By Rand()效率问题

    在MySQL中,随机抽取查询是常见的需求,但使用`ORDER BY RAND()`往往会导致效率低下,尤其是在处理大数据量的表时。这是因为`RAND()`函数在`ORDER BY`子句中会被执行一次对应于每一行的数据扫描,这使得全表扫描成为...

    mysql优化取随机数据慢的方法

    在MySQL中,优化随机数据抽取的关键在于避免使用`ORDER BY RAND()`,因为这会导致全表扫描,效率极低。特别是当表记录数量较大时,这种性能问题会更加明显。以下是一些优化策略: 1. **避免`ORDER BY RAND()`**: ...

    17 MySQL是如何基于冷热数据分离的方案,来优化LRU算法的.pdf

    MySQL数据库管理系统在执行数据查询和更新操作时,经常需要使用内存中的缓存机制以提升性能。LRU(Least Recently Used,最近最少使用)算法是广泛用于内存管理的一种缓存淘汰算法,它通过记录数据的使用顺序来决定...

    利用poi获取excel数据批量插入大量数据到mysql

    这种方法适用于需要从Excel数据源导入大量数据到关系型数据库的场景,能够有效地提高数据处理的效率。在实际应用中,可以进一步优化代码,例如添加错误处理、数据验证和性能监控等功能,以满足更复杂的需求。

    32 一文总结初步了解到的MySQL存储模型以及数据读写机制.pdf

    MySQL存储模型以及数据读写机制是数据库管理的核心知识点,涉及到数据在磁盘上的物理存储方式和内存中数据处理的流程。MySQL作为一个关系型数据库管理系统,它的存储模型和读写机制是理解其工作原理和优化性能的关键...

    MYSQL获取行号row_no

    这种方法可以处理更大规模的数据集,并能根据不同的排序需求灵活调整结果集顺序,但执行效率相对较低,尤其是在大表上进行操作时。 #### 方法三:基于条件筛选的行号 如果仅需对满足特定条件的记录生成行号,可以...

    MySQL随机查询记录的效率测试分析

    MySQL数据库在进行随机查询记录时,效率问题是一个关键考虑因素,特别是当表中包含大量数据时。传统的做法,如使用`SELECT * FROM table ORDER BY RAND() LIMIT 5`,看似简单,但在大表中实测却发现效率极低。原因是...

    JAVA主键随机+SELECT联动+数据库随机取数+F5刷新+字符编码乱码

    3. **数据库随机取数**:在数据库中随机选取数据通常用于测试、数据分析或者模拟真实场景。这可以通过编写SQL查询来实现,比如使用`RAND()`函数结合`LIMIT`子句在MySQL中随机选择记录。 4. **F5刷新**:在开发过程...

    mysql 如何插入随机字符串数据的实现方法

    此外,还有一种情况是为论文引用信息生成随机数据。如果需要在`citation`表中插入随机引用,而`papers`表的主键不是递增的,可以先添加一个临时的自增列`temp`,然后利用这个临时列来映射随机生成的数字。比如,插入...

    模拟数据生成写入到mysql

    5. **写入数据**: 执行SQL插入语句将模拟数据写入MySQL数据库。在Python中,可以使用`cursor.execute()`方法执行SQL语句。确保正确处理可能的异常,如数据类型不匹配或重复键冲突。 6. **批量插入优化**: 如果需要...

    MySQL数据库自动生成并修改随机root密码的脚本

    这通常通过执行`UPDATE`语句完成,例如:`UPDATE mysql.user SET Password=PASSWORD('新密码') WHERE User='root';` 5. **刷新权限**: 修改完密码后,需要执行`FLUSH PRIVILEGES;`命令,使MySQL服务器重新加载...

    三百万用户测试数据mysql脚本

    这个脚本可能是由一系列SQL语句组成的,用于创建表、插入数据、更新数据或者执行查询,以模拟真实世界中大规模用户数据的情况。 描述中提到,这些用户数据包括地址、电话、名称和密码等关键信息,这表明脚本创建的...

Global site tag (gtag.js) - Google Analytics