到目前为止,这是问题和我的方法。 我从表中有一个php mysql_query ,它可以包含2000到几百万行之间的任何内容。 我正在使用的JavaScript可视化库无法处理大于4-5千个元素的数组。所以我只是对每个第n个元素进行采样。 在php中我查询MySQL数据库的行数。如果该数字大于5000,我发送一种 $ query_every_n ,它将返回表格前两列的每第n个元素。如果它更少,我只需获得整个范围的整个表格。
<?php
....
$query_ct="select count(*) from ". $table_selected;
//Hey MySQL how many u got in that table_selected
$result_ct=mysql_query($query_ct);
while($row=mysql_fetch_array($result_ct))
{
$nct=$row[0];//SQL said there are $nct rows from the query_ct
}
if ($nct>5000 ){
$rownum=intval($nct/5000);
$query_evry_n="SELECT * FROM (SELECT @row:=@row+1 as rownum,".
$table_selected.".* FROM (SELECT @row:=0 )r,".
$table_selected ." ) ranked
WHERE rownum %".$rownum."=1";
} else{
$query_evry_n="SELECT * FROM ".$table_selected;
}
$result=mysql_query($query_evry_n);
if($result) {
$myarr=array();
while($row=mysql_fetch_array($result)){
$myarr[]=array($row['time'],$row[$field_selected]/100);
}//end while
?>
我希望能够在MySQL中完全做到这一点。 例如,我有一个20万行的表。 PHP将查询给定范围数组($ minVal,$ maxVal)中的数据,例如100 000到150 000。 并且MySQL将从该50 000范围或任何情况下返回每50000/5000 = 10点的样本。 我几乎没有尝试过自己解决这个问题,但到目前为止还没有成功。 谢谢你的帮助。