关于mysql中limit方面的查询优化

当数据库中的数据量较大时,读取数据需要用limit来做分页

limit offset, n

测试中发现,使用limit时,offset的值越大查询时长越长,查询效率越低

select id from table limit 2000000, 100;

此时,可以用where+id的方法来修改此sql语句,优化查询:

select id from table where id>2000000 limit 100;

因为id一般都是主键索引,查询效率较高

原文地址:https://www.cnblogs.com/fxm1/p/11317061.html

时间: 2024-10-30 08:01:40

关于mysql中limit方面的查询优化的相关文章

MYSQL中LIMIT用法

MYSQL中LIMIT用法 SELECT * FROM tableName LIMIT [offset,] rows; 1.select * from table limit m,n(显示条数) 其中m是指记录开始的索引index(索引是从0开始的表示第一条记录 ) n是指从第m+1条开始,取n条. 结果是检索记录第m+1行至(m+n)行记录,共取出n条记录 ex: SELECT * FROM 表名 limit 6,5; 结果:检索记录第7行至11行记录,共取出5条记录. 2.n可以被设置为-1

mysql中limit与in不能同时使用的解决方式.

mysql中limit与in不能同时使用的解决方式. 分类: MySQL2011-10-31 13:53 1277人阅读 评论(0) 收藏 举报 mysqlsubquery MySQL5.1中子查询是不能使用LIMIT的,报错: "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' " 这样的语句是不能正确执行的.select * from message where id i

sqlserver row_number 类似 mysql中 limit 用法

select * from ( select row_number() over(ORDER BY inspecdate desc,inspectime DESC,itemorder asc ) as num, contentid,quesioncontext,tempid,tempname,itemid,itemtext,belongteam,teamname,inspecdate, inspectime,contenttext,createperson,newaddtime,updateti

Mysql中limit的用法详解

对比Oracle.SQL Server,个人感觉MySql的分页是最好用的,现在总结一下,写在这里. Mysql中limit的用法: 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数. LIMIT 接受一个或两个数字参数.参数

MYSQL 中 LIMIT 用法

mapper文件中的sql: -------------------------------------------------------------------------------------------- (在实体类中定义的属性) start:从第几条记录开始. size:读取几条记录. select id="findAllUsers" parameterType="Map" resultType="entity.IUser">

mysql中min和max查询优化

mysql max() 函数的需扫描where条件过滤后的所有行: 在测试环境中重现: 测试版本:Server version:         5.1.58-log MySQL Community Server (GPL) testtable表中的索引 mysql> show index from testtable;+-----------+------------+------------+--------------+-------------+-----------+---------

mysql中limit的用法详解[数据分页常用]

在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目.初始记录行的偏移量是

MySQL中limit使用动态参数的解决方法(拼接SQL字符串语句来执行SQL)

官方好像说过limit已经在5.6版本上支持了动态参数,但是测试时依然还是不行. 那么要解决limit动态参数唯一能做的就是使用字符串SQL拼接的形式,然后再进行执行. 一般有以下方式解决: 1.存储过程拼接 2.函数拼接 3.视图里拼接 4.当前查询的session中使用 其实上面都是同一个意思,就是使用一个变量存取这个SQL,然后再执行这个变量. 样例: set @stmt = concat('select * from ',table_name,' limit ?,?'); prepare

Mysql中limit用法及简单按序查寻示例

limit 接收一个或两个参数. 可以实现前排前几行的数据或排后几行的数据,或者中间几行的数据 order by + 关键字  表示按关键字什么顺序排列,默认是正序,从小到大, order by + 关键字 desc 表示按倒序排列,从大到小顺序. 如:倒序排列取前几行数据: order by id desc limit 10 按照id的倒序排序 取出前10条 order by id desc limit 0,10 按照id的倒序排序 取出前10条 换句话说,Limit n 等价于 Limit