计算分表查询数据量

  • Post author:
  • Post category:其他


有分表的数据,需要做翻页管理,当时是做了按年查询的。其实换成其他的后缀或者前缀也一样

/* 获取每年所需查询的记录
 * @param aray $yearNum	每年包含数量  ['2019'=>20,'2018'=>19]
 * @param int  $page	页数
 * @param int  $size    记录数
 */
function getYearData($yearNum,$page,$size){
	$passNum = ($page-1)*$size;	// 已查询的记录数
	$retData = [];
	foreach($yearNum as $year=>$num){
		if($size <= 0) continue; // 满足当前所需要的记录数
		if($num >= $passNum){
			// 有剩余可查询数据
			if($num != $passNum){
				$searchNum = 0;
				// 剩余数据是否满足查询数量
				if(($num-$passNum) >= $size){
					$searchNum = $size;
					$size = 0;
				}else{
					// 减少需要查询的数量
					$searchNum = $num-$passNum;
					$size -= $searchNum;
				}
				$retData[] = array(
						'year' => $year,
						'start' => $passNum,
						'end' => $searchNum
				);
			}
			$passNum = 0;
		}else{
			$passNum = $passNum - $num;
		}
	}
	return $retData;
}



版权声明:本文为tqy982012700原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。