Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在SQL数据库中选择随机行_Php_Sql_Mysql_Select_Random - Fatal编程技术网

Php 在SQL数据库中选择随机行

Php 在SQL数据库中选择随机行,php,sql,mysql,select,random,Php,Sql,Mysql,Select,Random,我想在我的数据库中随机选择一行。我在一个网站上看到了这个解决方案: SELECT column FROM table ORDER BY RAND() LIMIT 1 此SQL查询正在运行,但有人告诉我这是一个无性能查询。还有别的解决办法吗 是的。你必须用数字计算行数 SELECT COUNT(*) FROM `table`; 在此之后,使用php函数mt_rand()获取从1到$count的随机数,并使用query获取: SELECT `column` FROM `table` LIMIT

我想在我的数据库中随机选择一行。我在一个网站上看到了这个解决方案:

SELECT column FROM table
ORDER BY RAND()
LIMIT 1
此SQL查询正在运行,但有人告诉我这是一个无性能查询。还有别的解决办法吗


是的。你必须用数字计算行数

SELECT COUNT(*) FROM `table`;
在此之后,使用php函数mt_rand()获取从1到$count的随机数,并使用query获取:

SELECT `column` FROM `table` LIMIT $rand, 1

关于这一主题还有很多讨论,包括不同DBMS的性能影响和策略。

好的,谢谢:)另一个问题,无关开发,我是法国人,我想知道我的英语是否正确、易懂?哎呀,不知什么原因,我以为你问的是
mysql
。是吗-稳定部队英语?不,不是关于mysql。那么在最初的问题中,你谈论了什么dbms
Microsoft SQL Server
?哦,最初的问题,是的,有MySQL^^该主题的所有答案可分为两类。1.使用RAND()(或DBMS特定同义词)或2时速度较慢。计算[1,id]范围内的一些随机
id
,并找到其中>=的值。这个解决方案为我们提供了不规则的随机覆盖范围(例如:1,2,3,4,5,6,7,8,9,1000000000000。在这种情况下,99.99%的情况下,您将得到最新的一行)。这不是真的,我想这是坦斯塔夫的事。像TABLESAMPLE这样的方法显然以随机性换取速度(并且是特定于供应商的)。如果你想进入寻找真正随机性的兔子洞,你需要在实现挑战中加入一个理论数学问题。您可以添加一个触发器,在插入时用伪随机数填充列,“预切片”您的大表到可管理的碎片中,然后从一个碎片中选择一行rand()limit 1。所以,预先计算一些“假”随机性。我同意所有这些方法都涉及到纯度和实用性之间的折衷。