eeeepiphany:
关于你说的优化方式中的第二条:'''通过 order by+索引来解决select id,name from user order by id limit1000000,10 需要注意 id 是索引列,通过索引排序后再 limit,同样减少了计算次数'''。请问这里的 '''通过索引排序后再 limit,同样减少了计算次数''' 是如何实现的。我理解的是:如果不加 order by,即执行 select id,name from user limit1000000,10; 则引擎层会返回第一个条数据给server层,server 层通过 limit_count 变量来判断这是否是第 1000000 条数据,不是就会让引擎层返回吓一跳数据。依次进行判断...。而如果执行 select id,name from user order by id limit1000000,10 则 MySQL 会采用全表查询,查询结束后会在 filesort 中进行主键排序。排序后引擎层会返回第一个条数据给server层,server 层通过 limit_count 变量来判断这是否是第 1000000 条数据,不是就会让引擎层返回吓一跳数据。依次进行判断...。即加上 order by 主键还会多出一步(会在 filesort 中进行主键排序)。那你说的'''通过索引排序后再 limit,同样减少了计算次数'''是从何而来呢?
eeeepiphany: 关于你说的优化方式中的第二条:'''通过 order by+索引来解决select id,name from user order by id limit1000000,10 需要注意 id 是索引列,通过索引排序后再 limit,同样减少了计算次数'''。请问这里的 '''通过索引排序后再 limit,同样减少了计算次数''' 是如何实现的。我理解的是:如果不加 order by,即执行 select id,name from user limit1000000,10; 则引擎层会返回第一个条数据给server层,server 层通过 limit_count 变量来判断这是否是第 1000000 条数据,不是就会让引擎层返回吓一跳数据。依次进行判断...。而如果执行 select id,name from user order by id limit1000000,10 则 MySQL 会采用全表查询,查询结束后会在 filesort 中进行主键排序。排序后引擎层会返回第一个条数据给server层,server 层通过 limit_count 变量来判断这是否是第 1000000 条数据,不是就会让引擎层返回吓一跳数据。依次进行判断...。即加上 order by 主键还会多出一步(会在 filesort 中进行主键排序)。那你说的'''通过索引排序后再 limit,同样减少了计算次数'''是从何而来呢?
hello97_db: 完整黑马程序员
AzumaTokaku.Cqy: 方案一首先得保证消息ID全局唯一且保持递增趋势,但如果用户阅读消息不是按顺序阅读,会出现已读未读展示
m0_71223228: 为什么覆盖了slave的offset就没有了
卡萨尔琪: 这些都有但是还没有主清单属性这么办。。。