mysql 随机取数据】的更多相关文章

本文详细解说了MySQL Order By Rand()效率优化的方案,并给出了优化的思路过程,是篇不可多得的MySQL Order By Rand()效率美文. 最近由于需要大概研究了一下MYSQL的随机抽取实现方法.举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1. 但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面…
// 随机取9个 $rand_sql = "SELECT * FROM `tf_product` WHERE (`id` >= ((SELECT MAX(`id`) FROM `tf_product`)-(SELECT MIN(`id`) FROM `tf_product`)) * RAND() + (SELECT MIN(`id`) FROM `tf_product`)) AND `is_show` = 1 AND `is_del` = 0 LIMIT 9"; $product…
SELECT * FROM table WHERE id >= (SELECT FLOOR(RAND()*MAX(id)) FROM table ) ORDER BY idLIMIT 1; 这样运行效率相当高…
最近做项目,需要做一个从mysql数据库中随机取几条数据出来. 总所周知,order by rand 会死人的..因为本人对大数据量方面的只是了解的很少,无解,去找百度老师..搜索结果千篇一律.特发到这里来,供大家学习. 在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的.下面我来介绍随机取数据一些优化方法. SELECT * FROM table_name ORDER BY ran…
--从MySQL随机选取数据 -------------------------2014/06/23 从MySQL随机选取数据最简单的办法就是使用”ORDER BY RAND()”; 方案一: SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1; 这种方法的问题就是非常慢.原因是因为MySQL会创建一张零时表来保存所有的结果集,然后给每个结果一个随机索引,然后再排序并返回. 有几个方法可以让它快起来. 基本思想就是先获取一个随机数,然后使用这个随机数来…
以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL随机查询数据 以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了. ; MySQL的rand()函数在手册里是这么说的: RAND() RAND(N) 返回在范围0到1.0内的…
大致思路: canal去mysql拉取数据,放在canal所在的节点上,并且自身对外提供一个tcp服务,我们只要写一个连接该服务的客户端,去拉取数据并且指定往kafka写数据的格式就能达到以protobuf的格式往kafka中写数据的要求. 1. 配置canal(/bigdata/canal/conf/canal.properties),然后启动canal,这样就会开启一个tcp服务 2. 写拉取数据的客户端代码 PbOfCanalToKafka package cn._51doit.flink…
从数据库中(mysql)随机获取几条数据很简单,但是如果一个表的数据基数很大,比如一千万,从一千万中随机产生10条数据,那就相当慢了,如果同时一百个人访问网站,处理这些个进程,对于一般的服务器来说,肯定是要死机的. mysql数据库获取随机数据的函数rand(),我建议轻易不要用这个,我写博客的时候试了一下,从16万数据里随机获取5条数据,用时14.02秒,这个耗费满惊人的. SELECT * FROM t_share ORDER BY rand() LIMIT 5; 通过mysql最大值函数m…
在一张10万行产品表(Product)中,随机取10条数据的几种方式: SET STATISTICS IO ON SELECT TOP 10 ID FROM dbo.Product(NOLOCK) WHERE 0.01 >= CAST(CHECKSUM(NEWID(), ID) & 0x7fffffff AS FLOAT) / CAST(0x7fffffff AS INT) --扫描计数 1,逻辑读取 5 次 SELECT TOP 10 * FROM Product ORDER BY NEW…
在mysql中查询5条不重复的数据,使用以下: 1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5  就可以了.但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. 1 SELECT *  2 FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `ta…
一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BYRAND() LIMIT 5 就可以了. 但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低. You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would…
基本环境:linux centos6.5 nutch2.2.1 源码包, mysql 5.5 ,elasticsearch1.1.1, jdk1.7 1.下载地址http://mirror.bjtu.edu.cn/apache/nutch/2.2.1/ 解压 2.修改数据存储方式是mysql 修改nutch根目录/ivy/ivy.xml文件,原来mysql数据存储是注释的. <dependency org="org.apache.gora" name="gora-cor…
  -- 慢 ; -- 较慢 SELECT * FROM `table` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`))) ; -- 快 `table 有 id 字段 SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((S…
select top 10 * from tablename order by NEWID()…
select * from (select rownum,KEYWORD, CATEGORY,CREATE_DATE,UPDATE_DATE from (select * from knet_keyword_category_t where category='two') ; ;…
SELECT * FROM tablename ORDER BY RAND() LIMIT 10…
取出的汉字都是问号 之后根据网友提示在输出之前对response进行编码设置 正常显示…
insert into result (user_id, activity_id, number) select user_id, activity_id from `activity_record`  order by rand() LIMIT 20; select * into 表A form 表B where条件;…
SELECT * FROM `table` AS t1 JOIN ( SELECT ROUND( RAND() * ( (SELECT MAX(id) FROM `table`) - (SELECT MIN(id) FROM `table`) ) + (SELECT MIN(id) FROM `table`) ) AS id ) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;…
import MySQLdb conn=MySQLdb.connect(host="xx",user="xx",passwd="xx",db="xx") cursor=conn.cursor() sql="xx" cursor.execute(sql) data=cursor.fetchall() cursor.close() conn.close()…
function getTodayLook($limit) { $sql = "select * from `tvhome_movie_today` order by rand() limit $limit"; $query = $this->db->query($sql); $result = $query->row_array(); return $result; }…
在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的.下面我来介绍随机取数据一些优化方法. SELECT * FROM table_name ORDER BY rand() LIMIT ; rand在手册里是这么说的:RAND()RAND(N)返回在范围0到1.0内的随机浮点值.如果一个整数参数N被指定,它被用作种子值. mysql> select RAND(); -> 0.5925…
最近项目需要用到批量更新数据库里的数据,在网上找了一下这方面的例子,觉得这个还不错,分享给大家. 在这个业务里里面涉及到了更新两张数据表,那么大家是不是会想到非常简单,马上上代码 $sql ,type,update_time=time() where is=$value['id']"; 其中数据表名为newhouse_clicks,有四个字段,主键id,type(类型-整型)字段,clicks(点击量-整型)字段,update_time(整型)字段这样做确实没有问题吗?比如说批量更新当前城市下的…
原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clicks set clicks=6,type=1,update_time=time() where is=$value['id']"; 其中数据表名为newhouse_clicks,有四个字段,主键id,type(类型-整型)字段,clicks(点击量-整型)字段,update_time(整型)字段 这…
最近老师让搞一个系统,仅仅展示一下数据库的数据 在做海底捞时,是交接的师兄的项目,用的语言是java,框架是SSM(Spring.SpringMVC.MyBatis),这次我准备用Python写,前端是从网上下载的免费的,修改的:https://blackrockdigital.github.io/startbootstrap-sb-admin-2/index.html 改完之后,实现Ajax+Django从数据库MySql中取数据展示 借鉴的博客有: https://blog.csdn.net…
最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据. 往orders 表中插入 来自 sql_person cm_user_car_model cm_sp_product_new 部分固定数据以及两个递增的时间数据 对于4的数据很好处理不过是时间处理,以及固定值的递增. 对于1,2,3部分,第一眼想到的是用cross join来去三个表的笛卡尔积,三个表各取一条拼合在一起插入 例如select a.*,b.*,c.*  from (select * from t1 where... l…
最近在做接口测试的时候,测试数据是从数据库查询的,但是当需要并发多次去调用接口时,如果sql只是单纯的进行了limit取值,那并发的时候肯定会每条数据都一样. 因此,研究了下sql随机取一条数据的写法,从而用大量不同数据去进行并发的接口性能测试 原文:https://www.cnblogs.com/my_life/articles/7827233.html 三种方法: (1)ORDER BY RAND() 写法:SELECT * FROM 表A ORDER BY RAND() LIMIT 1 缺…
原文地址:http://www.im286.com/thread-7091552-1-1.html 转来备份 研究一些随机的因素,主要是讲究效率问题. 语句一: MYSQL手册里面针对RAND()的提示大概意思就是,在 ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描,导致效率相当相当的低,效率不行,切忌使用. ---------分隔线------------------------------------ 语句二: SELECT * FROM users AS…
我想把数组打乱随机取些值,于是用PHP的shuffl()打乱数组,当然,array_rand()也是可以随机取数组的,但是我想到另一个更高效的办法,是不是能用sql直接随机数据?当然可以! mysql是这样实现的: select * from tablename order by rand() limit 10 说明:rand()返回在范围0到1.0内的随机浮点值 sqlserver是这样实现的: select top 10 * from tableName order by NewID() 说…
若要在i ≤r≤ j 这个范围得到一个随机整数r ,需要用到表达式 FLOOR( RAND() * (j – i)+i),RLOOR()取整树部分,RAND()生成0~1的随机数.ROUND(x,n)四舍五入取整,ROUND(x,n)表示四舍五入返回数字x的n位小数的数字,n可以是负数,这时是指定小数点左边的n位整数位为0,同时小数位均为0:. 例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句: SELECT  FLOOR(RAND()*(12-7)+7)…