Offset是Excel中的函数,在Excel中,OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可以为一个单元格或单元格区域。并可以指定返回的行数或列数。
如果行数和列数偏移量超出工作表边缘,函数OFFSET返回错误值#REF!。
如果省略height或width,则假设其高度或宽度与reference相同。
函数OFFSET实际上并不移动任何单元格或更改选定区域,它只是返回一个引用。函数OFFSET可用于任何需要将引用作为参数的函数。例如,公式 SUM(OFFSET(C2,1,2,3,1)) 将计算比单元格C2靠下1行并靠右2列的3行1列的区域的总值。
扩展资料:
Excel函数一共有11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息函数、逻辑函数、查询和引用函数、数学和三角函数、统计函数、文本函数以及用户自定义函数。
1、数据库函数
当需要分析数据清单中的数值是否符合特定条件时,可以使用数据库工作表函数。例如,在一个包含销售信息的数据清单中,可以计算出所有销售数值大于 1,000 且小于 2,500 的行或记录的总数。
2、日期与时间函数
通过日期与时间函数,可以在公式中分析和处理日期值和时间值。
3、工程函数
工程工作表函数用于工程分析。这类函数中的大多数可分为三种类型:对复数进行处理的函数、在不同的数字系统(如十进制系统、八进制系统和二进制系统)间进行数值转换的函数、在不同的度量系统中进行数值转换的函数。
4、财务函数
财务函数可以进行一般的财务计算,如确定贷款的支付额、投资的未来值或净现值,以及债券或息票的价值。
5、信息函数
可以使用信息工作表函数确定存储在单元格中的数据的类型。如果需要确定某个单元格区域中是否存在空白单元格,可以使用 COUNTBLANK工作表函数对单元格区域中的空白单元格进行计数,或者使用 ISBLANK 工作表函数确定区域中的某个单元格是否为空。
6、逻辑函数
使用逻辑函数可以进行真假值判断,或者进行复合检验。例如,可以使用IF函数确定条件为真还是假,并由此返回不同的数值。
7、查询和引用函数
当需要在数据清单或表格中查找特定数值,或者需要查找某一单元格的
引用时,可以使用查询和引用工作表函数。例如,如果需要在表格中查找与第一列中的值相匹配的数值,可以使用 VLOOKUP工作表函数。如果需要确定数据清单中数值的位置,可以使用 MATCH工作表函数。
参考资料:百度百科-Offset
/1)下载offset.dat,通过FileBox把offset.dat放在/home/user/MyDocs/.maps目录下 /2)安装deb包 /把下边的两个deb包放入自带大容量下的tmp文件夹下,然后开始命令, /打开TXerminal,(确定安装过rootsh并且重启过) /输入root回车 /cd /home/user/MyDocs/tmp回车(进入存放安装文件的路径) /dpkg -i libmappero0_3.2-os2008china_armel.deb回车 /dpkg -i maemo-mapper_3.2-os2008china_armel.deb回车 / /3)打开Mappero,顶部菜单-》地图(Map)-》图片系统(Tiles)-》Google Vector-》类型(Type)(向下翻)-》XYZ_OFFSET,保存 /关闭Mappero,重新打开,最好重启系统在MySQL数据库 *** 作中,我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的。其实我们可以使用Limit关键字来避免全表扫描的情况,从而提高效率。有个几千万条记录的表 on MySQL 5.0.x,现在要读出其中几十万万条左右的记录。常用方法,依次循环:
select * from mytable where index_col = xxx limit offset, limit
经验:如果没有blob/text字段,单行记录比较小,可以把 limit 设大点,会加快速度。
问题:头几万条读取很快,但是速度呈线性下降,同时 mysql server cpu 99% ,速度不可接受。
调用 explain select * from mytable where index_col = xxx limit offset, limit
显示 type = ALL
在 MySQL optimization 的文档写到"All"的解释
A full table scan is done for each combination of rows from the previous tables. This is normally not good if the table is the first table not marked const, and usually very bad in all other cases. Normally, you can avoid ALL by adding indexes that allow row retrieval from the table based on constant values or column values from earlier tables.
看样子对于 all, mysql 就使用比较笨的方法,那就改用 range 方式? 因为 id 是递增的,也很好修改 sql 。
select * from mytable where id >offset and id <offset + limit and index_col = xxx
explain 显示 type = range,结果速度非常理想,返回结果快了几十倍。
Limit语法:
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT接受一个或两个数字参数。参数必须是一个整数常量。
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1)。
为了与 PostgreSQL 兼容,MySQL 也支持句法:LIMIT # OFFSET #。
mysql>SELECT * FROM table LIMIT 5,10//检索记录行6-15
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为-1
mysql>SELECT * FROM table LIMIT 95,-1//检索记录行96-last
//如果只给定一个参数,它表示返回最大的记录行数目,换句话说,LIMIT n 等价于 LIMIT 0,n
mysql>SELECT * FROM table LIMIT 5//检索前5个记录行
MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。同样是取10条数据,下面两句就不是一个数量级别的。
select * from table limit 10000,10
select * from table limit 0,10
文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据,明显要好于直接使用limit。
这里我具体使用数据分两种情况进行测试。
1、offset比较小的时候:
select * from table limit 10,10
//多次运行,时间保持在0.0004-0.0005之间
Select * From table Where vid >=(Select vid From table Order By vid limit 10,1) limit 10
//多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候:
select * from table limit 10000,10
//多次运行,时间保持在0.0187左右
Select * From table Where vid >=(Select vid From table Order By vid limit 10000,1) limit 10
//多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)