一分快三平台MySQL rand函数达成自由数的艺术

来源:http://www.pykjg.com 作者:一分快三平台 人气:100 发布时间:2020-02-01
摘要:急需测量检验MYSQL数据库,里面有二个上万条数据的数据库,如何写二个PHP文件一下老是换代几百条音讯,笔者都是写三个周而复始叁回改善一条新闻,那样作者通晓用WHILE写就能够了,

急需测量检验MYSQL数据库,里面有二个上万条数据的数据库,如何写二个PHP文件一下老是换代几百条音讯,笔者都是写三个周而复始叁回改善一条新闻,那样作者通晓用WHILE写就能够了,假使贰次改过好比100条数据改什么写吗!正确答案是运用MySQL rand函数:UPDATE cdb_posts SET views = rand(卡塔尔(قطر‎;顺便给你找了点有关mysql rand函数的实例,如下:那就在insert 命令中,value(卡塔尔国里面用rand(卡塔尔(قطر‎,注意字段宽度是或不是够一直以为mysql随机询问几条数据,就用SELECT * FROM `table` OMuranoDEEnclave BY RAND(卡塔尔 LIMIT 5就能够了。

可是真正测验一下才意识这么成效超级低。三个15万余条的库,查询5条数据,居然要8秒以上查看官方手册,也说rand(State of Qatar放在OEnclaveDER BY 子句中会被实践多次,自然功能及比相当的低。.

搜求谷歌,英特网基本上都以询问max(id卡塔尔(قطر‎ * rand(卡塔尔国来随意获取数据。

SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 WHERE t1.id = t2.id ORDER BY t1.id ASC LIMIT 5;

只是这么会产生三回九转的5条记下。消释办法只好是历次查询一条,查询5次。尽管如此也值得,因为15万条的表,查询只必要0.01秒不到。上边包车型地铁语句选用的是JOIN,mysql的论坛上有人使用

SELECT * FROM `table` WHERE id = (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

自己测验了生机勃勃晃,须求0.5秒,速度也不利,可是跟上边的口舌仍有非常的大差距。总觉有哪些地点不健康。于是自个儿把语句改写了一下。

SELECT * FROM `table` WHERE id = (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))) ORDER BY id LIMIT 1;

那下,功能又坚实了,查询时间仅有0.01秒最终,再把语句康健一下,加上MIN(id卡塔尔(قطر‎的判断。作者在最开头测验的时候,正是因为从没增进MIN(id卡塔尔的决断,结果有四分之二的岁月总是查询到表中的日前几行。完整查询语句是:

SELECT * FROM `table` WHERE id = (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`))) ORDER BY id LIMIT 1;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;

最后在php中对这多少个语句进行独家查询12遍,后面一个开支时间 0.147433 秒后面一个花费时间 0.015130 秒

上述即是MySQL rand函数完毕自由数的情势。

本文由一分快三平台发布于一分快三平台,转载请注明出处:一分快三平台MySQL rand函数达成自由数的艺术

关键词:

最火资讯