MYSQL limit用法


1、Mysql的limit用法

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

Sql代码 复制代码 复制代码 引用,路人乙:Mysql中limit的用法详解】

2、Mysql的分页查询语句的性能分析

      MySql分页sql语句,如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。

2.1最基本的分页方式:

Sql代码 复制代码 复制代码 复制代码 复制代码 复制代码 energy1010的空间:MySql分页sql语句】

3、Oracle分页查询语句

Oralce数据库 

从数据库表中第M条记录开始检索N条记录 

Sql代码 复制代码 复制代码 复制代码 复制代码 复制代码 复制代码 复制代码 收藏代码
  1. create procedure XiaoZhengGe    
  2. @sqlstr nvarchar(4000), --查询字符串    
  3. @currentpage int, --第N页    
  4. @pagesize int --每页行数    
  5. as    
  6. set nocount on    
  7. declare @P1 int, --P1是游标的id    
  8. @rowcount int    
  9. exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output    
  10. select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页    
  11. set @currentpage=(@currentpage-1)*@pagesize+1    
  12. exec sp_cursorfetch @P1,16,@currentpage,@pagesize    
  13. exec sp_cursorclose @P1    
  14. set nocount off   
create procedure XiaoZhengGe 
@sqlstr nvarchar(4000), --查询字符串 
@currentpage int, --第N页 
@pagesize int --每页行数 
as 
set nocount on 
declare @P1 int, --P1是游标的id 
@rowcount int 
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output 
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页 
set @currentpage=(@currentpage-1)*@pagesize+1 
exec sp_cursorfetch @P1,16,@currentpage,@pagesize 
exec sp_cursorclose @P1 
set nocount off 

其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。 

建议优化的时候,加上主键和索引,查询效率会提高。 

通过SQL 查询分析器,显示比较:我的结论是: 

分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 

分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 

分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用 

在实际情况中,要具体分析。