@Override
	public long fastCount(int scanSpan, int countOut) {
		if (daoFunc != null) {
			return daoFunc.fastCount(scanSpan, countOut);
		} else {
			PreparedStatement pstmt = null;
			ResultSet rs = null;
			try {
				SqlC sqlC = SqlC.select(voClass);
				int count = 1;
				sqlC.limit(new Pager(count, scanSpan));
				while (true) {
					pstmt = conn.prepareStatement(sqlC.getSql());
					rs = pstmt.executeQuery();
					if (rs.next()) {
						rs.last();
						int result = rs.getRow();
logger.debug("debug in fastCount middle count and result : " + count + "," + result);
						if (result != scanSpan) {
							return (count - 1) * scanSpan + result;
						} else {
							count++;
							sqlC.limit(new Pager(count, scanSpan));
						}
					}
					if (count > countOut) {
						return 0L;
					}
				}
			} catch (SQLException e) {
				logger.error(e.getMessage(), e);
				return 0L;
			} finally {
				try {
					rs.close();
					pstmt.close();
				} catch (SQLException e) {
					logger.error(e.getMessage(), e);
				}
			}
		}
	}