LIMIT

来源:互联网 发布:px4飞控源码 百度云 编辑:程序博客网 时间:2024/05/16 08:02
① Select * from table LIMIT m; # 从0开始,m条记录
② Select * from table LIMIT m,n; # 从m+1条记录开始,n条记录【询语句偏移量offset很大的时候,效率较低
③ Select * from table LIMIT rows OFFECT offset;

    第一个自变量指定:返回的第一行的偏移量offset,第二个自变量指定:返回的行数的最大值。初始行的偏移量为0(不是1)。

Select*from sakila.rental LIMIT 14036,10;#① 6ms

Select*from sakila.rental LIMIT 10 OFFSET 14036;#②  6ms ,PostgreSQL ,【结果与 ① 等价】

 

Select*from sakila.rental WHERE rental_id>=14036 LIMIT 10;  #③ 1ms

Select*from sakila.rental WHERE rental_id>=(SELECT rental_id from sakila.rental limit 14306,1LIMIT 10;  #④ 3ms

 offset偏移量较大时,可先获取到offset的id后,再直接使用limit size来获取数据。(实际SQL中偏移量对应字段应该where字段不一致才有效果,和SQL①对比)


Select*from sakila.rental LIMIT 0; #⑤ 迅速返回一空集。这可以于检查一查询的有效性

 

SELECT*FROM rental WHERE rental_date ='2005-08-01 09:45:58'LIMIT 1;  #⑥ limit耗时0.018slimit耗时0.002s


Select*from  sakila.rental INNER JOIN(SELECT rental_id from sakila.rental limit14306,10) aa USING(rental_id);  # 3ms,给子查询的表加一个别aa;效果和④等价


Note: 

  • where...limit....性能基本稳定,受偏移量offset和行数rows的影响不大;
  • 而单纯采用limit的话,受偏移量的影响很大,当偏移量大到一定后性能开始大幅下降。


0 0