测试数据表的创建在文章:http://www.cnblogs.com/wt645631686/p/6868192.html

先看一下我的SQL方案

SELECT * FROM `emp` WHERE `empno` >=(SELECT FLOOR(RAND() * ((SELECT MAX(empno) FROM `emp`) - (SELECT MIN(empno) FROM `emp`)) + (SELECT MIN(empno) FROM `emp`)))  LIMIT 

在终端中测试结果是0.01sec.

在Mysql工具中测试结果是0.008-0.01sec。

看一下我在网上找到方案:

第一种方案:

SELECT *
FROM `emp` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(empno) FROM `emp`)-(SELECT MIN(empno) FROM `emp`))+
(SELECT MIN(empno) FROM `emp`)) AS empno) AS t2
WHERE t1.empno >= t2.empno
ORDER BY t1.empno LIMIT 100;

在终端中测试结果是0.00sec.

在Mysql工具中测试结果是0.001-0.003sec。

第二种方案:

SELECT * FROM `emp`
WHERE empno >= (SELECT floor(RAND() * (SELECT MAX(empno) FROM `emp`)))
ORDER BY empno LIMIT ;

在终端中测试结果是0.01-0.02sec.

在Mysql工具中测试结果是0.014-0.016sec。

第三种方案:

SELECT * FROM `emp`
WHERE empno >= (SELECT floor( RAND() * ((SELECT MAX(empno) FROM `emp`)-(SELECT MIN(empno) FROM `emp`)) +
(SELECT MIN(empno) FROM `emp`)))
ORDER BY empno LIMIT 100;

在终端中多次测试,由0.2sec最高,到最终结果是0.10-0.14sec,这是因为Mysql的查询缓存起到了作用。

在Mysql工具中测试结果是0.125-0.289sec。

最终第一种方案胜出,得出结论:采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。

具体原因大家自己用EXPLAIN或者DESC,PROFILING工具分析一下。

Mysql取随机数据效率测试(400W条中读取100条)的更多相关文章

  1. Mysql取随机数据效率测试(200W条中读取100条)

    第一种方案: SELECT * FROM `follow_record` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(record_id) FROM ...

  2. 实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  3. 遭遇AutoMapper性能问题:映射200条数据比100条慢了近千倍

    今天遇到了AutoMapper的一个性能问题,使用的是AutoMapper的Project特性,AutoMapper版本是3.3.0,代码如下: return await _repository .G ...

  4. PHP多进程非阻塞模式下结合原生Mysql与单进程效率测试对比

    公司在做游戏服务器合并的时候,对大批量数据表做了合并操作,难免会出现数据格式不一致问题.根据玩家反映BUG排查,是因为某个模块下日志表出现了数据格式问题导致. 目前想到的是有两种方案解决,第一种就是把 ...

  5. mysql 导出每张表中的100条数据..............

    windows下配好MYSQL 环境变量,cmd 然后: mysqldump -uroot -p123 [数据库名]--where "1=1 limit 100" --lock-a ...

  6. Java从.CSV文件中读取数据和写入

    .CSV文件是以逗号分割的数据仓储,读取数据时从每一行中读取一条数据元祖,也就是一条数据,再用字符分割的方式获取表中的每一个数据项. import java.io.BufferedReader;    ...

  7. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  8. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  9. mysql中插入多条记录-微软批处理

    当向mysql中插入大量数据时,可以使用微软的批处理方式.这样可以防止内存溢出又提高了效率.我写了一个mysql中插入多条记录的例子.赋值代码可以直接使用. 1.首先需要添加两个dll MySql.D ...

随机推荐

  1. ORACLE对象大小写问题

    在数据库新建一个测试表(数据库版本为ORACLE 10.2.0.1.0),表名为小写的test. 脚本如下所示: CREATE TABLE test(     id      NUMBER(10),  ...

  2. org.json.JSONObject的optXXX方法

    JSONObject有很多optXXX方法,比如optBoolean,optString,optInt.... 他们的意思是:如果这个JSONObject对象,如果有返回这个属性的值,如果没有返回一个 ...

  3. jenkins构建自由风格项目[四]

    标签(linux): jenkins 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 构建一个php项目 创建一个新的项目 选择从git获取源码 配置gitlab ...

  4. Hibernate的五个主要接口

    Hibernate作为持久成中间件,它的具体实现对与上层调用是透明的,即上层通过接口来调用Hibernate的具体实现,所以对于入门级别的讨论来说,自然应该先从接口开始了.

  5. php之插入排序

    <?phpfunction insertSort($arr) {  //插入排序    $len = count($arr);    for($i=1;$i<$len;$i++){     ...

  6. CSS——选择器2

    1.子选择器 (1).用于指定标签元素的第一代子元素,使用">"号. (2).例子: <style type="text/css"> .foo ...

  7. linux中编译安装Apache、PHP、MySQL(上)

    1.简介 在阿里云买了个云服务器,一直没时间折腾.过了近十天了吧,才有时间好好玩玩这个云服务器.自己是做Web开发的,所以我需要的开发环境是LAMP.之前打算是采用yum安装,不过yum安装apach ...

  8. Java对List进行分页

    Java对组装的List分页 以前一直是在DAO层直接从数据库里分页,但是今天因为有些数据,需要混合展示,就是根据条件取出了多个对象的集合,然后把这些多个List放到一个List里,然后在从这个Lis ...

  9. 生成csv格式文件并导出至页面的前后台实现

    一.前台实现: 1. HTML: <div> <a href="javascript:void(0);" class="btnStyleLeft&quo ...

  10. SpringMVC源码情操陶冶-AbstractHandlerMethodMapping

    承接前文SpringMVC源码情操陶冶-AbstractHandlerMapping,本文将介绍如何注册HandlerMethod对象作为handler 类结构瞧一瞧 public abstract ...