Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
MySQL性能-带Where子句的大表随机行_Mysql_Performance_Random_Where Clause - Fatal编程技术网

MySQL性能-带Where子句的大表随机行

MySQL性能-带Where子句的大表随机行,mysql,performance,random,where-clause,Mysql,Performance,Random,Where Clause,我有一个MySQL表,目前存储了大约330000条记录。我需要编写一个快速高效的查询来提取15条随机记录,但要使用一个基于标志的where子句 例如,我尝试过几个效率很低的选项,我可能会添加: 从tbl中选择col1、col2、col3,其中“opt1”、“opt2”、“opt3”顺序中的标志按RAND LIMIT 15排列 此查询大约需要3秒钟,速度太慢。我正在使用的另一个选项是,在本例中,取返回的所需行数15,除以请求的标志行总数(等于$x),然后运行此查询: 在调用查询之前,从tbl中选择

我有一个MySQL表,目前存储了大约330000条记录。我需要编写一个快速高效的查询来提取15条随机记录,但要使用一个基于标志的where子句

例如,我尝试过几个效率很低的选项,我可能会添加:

从tbl中选择col1、col2、col3,其中“opt1”、“opt2”、“opt3”顺序中的标志按RAND LIMIT 15排列

此查询大约需要3秒钟,速度太慢。我正在使用的另一个选项是,在本例中,取返回的所需行数15,除以请求的标志行总数(等于$x),然后运行此查询:


在调用查询之前,从tbl中选择col1、col2、col3,其中RAND在内存中生成15个整数ID。。。您在其中添加了一个nice IN子句。当然,您必须首先获得最大ID。

谢谢,我试图不必将它们全部存储在内存中,但这似乎是我们必须要做的。这样如何: