PHP如何实现在数据库随机获取几条记录
本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。PHP实例分享给大家供大家参考,具体如下:
为什么要写这个?
在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是大数据开发,分析。
今天偶然想起来一个坑爹数据,如:PHP取百万条数据中随机20条记录,当时就用的算法。
1.先统计统计数据库多少条记录(这个做个数据缓存,如1小时重新统计一次),
2.根据总条数,随机1次,1次性取出20条记录(当然这个就相当于分页了,要求不高的话,这个最快,我用的就是这个);
还有一种方法,随机20次,重复执行20次。
例如:
$sum=800000;//得到总条数
//循环取数据
for($i=1;$i<=20;$i++){
$offset=mt_rand(1,$sum);
//控制重复对比的,请自行实现
//数据库取数据的,请自行实现
$sql="select * from table limit $offset,1";
echo$sql;
}
PHP如何实现在数据库随机获取几条记录的更多相关文章
- postgresql-从表中随机获取一条记录
目录 postgresql如何从表中高效的随机获取一条记录 随机获取一条记录random() 改写1 改写2 改写3 对比 注意 结语 postgresql如何从表中高效的随机获取一条记录 selec ...
- 四种数据库随机获取N条数据的方法
1.SQL Server: SELECT TOP n * FROM tableName ORDER BY NEWID(); 2.ORACLE: SELECT * FROM (SELECT * ...
- 从数据库表中随机获取N条记录的SQL语句
Oracle: select * from (select * from tableName order by dbms_random.value) where rownum < N MS SQ ...
- mysql 从数据库中获取多条记录,二维展示数据
展示要求: 客户/日期 2017-10-16 1017-10-17 2017-10-18 客户1 客户2 数据库中数据: 解决办法: 1.新建一个实体类:客户名称.客户数据(A ...
- Oracle数据库随机取某条记录的一个字段值
思路: 先将取出的值随机排序,然后在随机排序的每次取第一条的结果 举例如下: select * from(select t.code fromTBIZOPS_PROVINCE t ORDER BY ...
- 数据库随机取n条记录
SQL Server SELECT TOP N * FROM 表名 ORDER BY NEWID() My SQL SELECT * FROM 表名 ORDER BY RAND() ...
- TODO:从数据库中随机抽取一条记录
TODO:从数据库中随机抽取一条记录 1.最直接,最粗暴的方法先计算记录的总数,然后选择一个从0到记录总数之间的随机数n,利用skip跳过n条记录,这是效率低下的的方法,首先的记录总数,在用skip会 ...
- php 数组 高效随机抽取指定条记录的算法
php使用数组array_rand()函数进行高效随机抽取指定条数的记录,可以随机抽取数据库中的记录,适合进行随机展示和抽奖程序. 该算法主要是利用php的array_rand()函数,下面看一下ar ...
- TP随机从数据库中获取一条数据
orderRaw('rand()'): /** * 随机获取一条商品信息 * @param [type] $condition * @param [type] $field * @param [typ ...
随机推荐
- [Swift]LeetCode156.二叉树的上下颠倒 $ Binary Tree Upside Down
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that ...
- 小程序自定义pick(日期加时间组合)
最近小程序有个需求要使用日期加时间的pick组件 翻了小程序文档似乎没有符合的 手写一个 新建组件picker.js: Component({ properties: { disabled: { t ...
- 10 个深恶痛绝的 Java 异常。。
异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题. 什么是异常及异常的分类请看这篇文章:一张图搞清楚 Java ...
- Python Matplotlib.pyplot plt 中文显示
话不多说,上代码 # -*- coding: UTF-8 -*- import matplotlib.pyplot as plt from matplotlib.font_manager import ...
- 【转】linux防火墙配置
开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 -- ...
- 【Zara原创】SqlSugar4轻量级ORM框架的使用指南
前言:sqlSugar出生已经有3年之久了,从1.0到现在的4.x的版本,为了以后方便使用SqlSugar,所以特意花了2个小时来叙述它. 关于SqlSugar 性能:性能最好的ORM之一,具有超越D ...
- SpringBoot+Elasticsearch
1. 前言 1.1. 集成方式 Spring Boot中集成Elasticsearch有4种方式: REST Client Jest Spring Data Spring Data Elastic ...
- ModelFirst开发
首先介绍一下ModelFirst开发方式,什么时候才用呢!在没有数据库时,可以借助EF设计模型,然后根据模型同步完成数据库中表的创建,这就是Model First开发方式,简而言之就是先有模型再有表. ...
- Asp.Net MVC路由生成URL过程
这次谈一谈Asp.Net MVC中所学到的路由生成URL的相关技术,顺便提一提遇到的一些坑,真的是掉坑掉多了,也就习以为常了,大不了从坑里再爬出来.初学者,包括我,都以为,mvc的核心是模型视图控制器 ...
- Java多线程之Executor框架和手写简易的线程池
目录 Java多线程之一线程及其基本使用 Java多线程之二(Synchronized) Java多线程之三volatile与等待通知机制示例 线程池 什么是线程池 线程池一种线程使用模式,线程池会维 ...