当前位置:Gxlcms > 数据库问题 > MySQL--limit使用注意

MySQL--limit使用注意

时间:2021-07-01 10:21:17 帮助过:13人阅读

= 100 limit 300000,10 ) as B on A.id = B.id

变化就是 select id from table1 where value = 100 limit 300000,10  在value的索引上查询时只是把id查出来,由于这个索引上本来就有id,因此这时用到了索引覆盖,速度非常快。在得到300010个id后,与原表用id做一个连接,再select * 即可完成原有的功能,速度非常快。

解决办法2:有些情况可以 使用 limit n 代替 limit m,n

如果条件允许,即我们知道下一次查询第一条数据的筛选条件,那就应该使用这个条件使得:where查出的数据第一条就是我们需要的,只需从第一条连续取n条即可:

select id from table1 where value = 100 and id > xxx and xxx .... limit 10

当然,上面的方法虽然是执行速度特别快,但只是在我们知道下一条数据的条件时才能做到。

 

总结就是:

 1. 如果limit m, n时 m 特别大,select 的列又没能用上索引覆盖,就可以考虑先select某个列以用上索引覆盖并把结果作为一个子表,再用原表与子表做连接,最后select出所有列。

 2. 如果我们知道下一条我们需要的数据的查询条件,就可以考虑用where语句时用上这个条件,然后使用 limit n 从第一条取连续的 n 条,避免查询大量的无效行。

归根结底就是:减少MySQL 从磁盘读取数据页的数量,就是那些4k一个的数据页。

MySQL--limit使用注意

标签:select   sele   完成   数据   解决办法   磁盘   执行sql   读取   大量   

人气教程排行