X  
登录

还没有账号?立即注册

忘记密码?
登陆
X  
注册

已经有账号?马上登陆

获取验证码
重新获取(60s)
立即注册
统计
  • 建站日期:2021-03-10
  • 文章总数:518 篇
  • 评论总数:155 条
  • 分类总数:32 个
  • 最后更新:4月20日
文章 mysql语言

mysql 分页查询,你写对了吗?

梦幻书涯
首页 mysql语言 正文
CREATE TABLE users(
  id integer PRIMARY KEY,
  name varchar(50) NOT NULL,
  pswd varchar(50) NOT NULL,
  email varchar(50),
  create_time timestamp NOT NULL,
  notes varchar(200)
);
INSERT INTO users(id, name, pswd, email,create_time)
with recursive t(id, name, pswd, email,create_time)
as(
select 1,cast(concat("user",1) as char(50)),"e10adc3949ba59abbe56e057f20f883e",
cast(concat("user1","@qq.com") as char(50)),'2020-01-01 00:00:00'
union all
select id+1,cast(concat("user",id) as char(50)),"e10adc3949ba59abbe56e057f20f883e",
cast(concat("user",id,"@qq.com") as char(50)),create_time+ interval mod(id,2) minute
from t
where  id<1000000
)
SELECT /*+ SET_VAR(cte_max_recursion_depth = 1M) */* FROM t;
--  offset行驶
select count(*) 
from users 
-- create index index_create_time on users(create_time)
-- 还没创建索引前,默认索引为ID  下面查询执行计划是全表扫描 因为没
-- 用到索引ID  

explain select users.name,users.id  from users
limit 20 offset 60000 
-- type=all rows994039  key——len 全表扫描,行九十多万行,key_len长度为null

-- 使用了索引  id

explain select users.name,users.id  from users
-- where id>800000
order by create_time, id 
limit 20 offset 400000

-- type=index使用索引 rows800020  key——len 4 全表扫描,行800020 行,key_len长度为4一个
-- 索引字段为4字符长度

-- 提示  
explain select users.name,users.id  from users
order by id 
limit 20 offset 80000800
-- 像这种type=all key——len 为null  全表扫描 key_len长度为null,因为有时候偏移量太大
-- 系统会觉得这么大的偏移量还不如全表扫描,直接不用索引来查询了

-- 重点  即使你创建了索引  如果你不使用索引字段,他也不会生效
-- 即使你创建了索引,偏移量太大也会等于没创建,因为系统觉得偏移量这么大还不如全表扫描
#keyset  无限下滚行驶  就是不知道下面多少 也不知道滚了多少数据
-- 这个好处就是查询的数据永远都是20
-- 这个模式就是每次查询都会返回最后一次的数据  然后在根据最后一次的数据
-- 作为where条件  尽量这两个条件都是索引 那么这样是效率最高的
-- 这样就保证每次查询都是20条 速度就非常快
-- 那么offset 0 就可以省略了

-- create index index_create_time on users(create_time) 没创建前 637ms
-- 创建后6ms
select *  from users
where create_time > '2020-01-01 00:10:00' and id >20
order by users.create_time , id
limit 20 offset 0

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
这篇文章最后更新于2022-6-29,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
设计模式五种关系依赖聚合组合实现继承泛化
« 上一篇
常见的电脑系统问题
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
登陆 注册
永远的少年,永远的梦

热门文章