首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL ORDER BY主键idLIMIT限制走错索引

=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品日营业数据表'; Explain命令查看执行计划 -- 批量查询耗时154ms...where; Using filesort -- 批量查询耗时397ms select product_id, sales_num, report_date from `report_product_sales_data...; -- 对于这条走了预期report_product_sales_data_hq_code_orgz_id_index索引的查询,我们看下优化器的执行过程 select product_id, sales_num...这边时,MySQL也没有改变执行计划,还是选择了report_product_sales_data_hq_code_orgz_id_index索引 "clause": "ORDER...where 总结 在order by id的情况下,MySQL由于自身的优化器选择,为了避免某些排序的消耗,可能会走非预期的PRIMARY主键索引; 对于数据量比较大,而且执行量很高的分页sql,尽可能将所有的查询字段包括在索引中

6.6K32
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL ORDER BY主键idLIMIT限制走错索引

    =InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='商品日营业数据表'; Explain命令查看执行计划 -- 批量查询耗时154ms...where; Using filesort-- 批量查询耗时397ms select product_id, sales_num, report_date from `report_product_sales_data...;-- 对于这条走了预期report_product_sales_data_hq_code_orgz_id_index索引的查询,我们看下优化器的执行过程 select product_id, sales_num...这边时,MySQL也没有改变执行计划,还是选择了report_product_sales_data_hq_code_orgz_id_index索引               "clause": "ORDER...where 总结 在order by id的情况下,MySQL由于自身的优化器选择,为了避免某些排序的消耗,可能会走非预期的PRIMARY主键索引; order by 和 limit 结合使用,如果where

    1.8K10

    MySQL自增id超大问题查询

    问题排查 这张表是一个简单的接口服务在使用,每天大数据会统计一大批信息,然后推送给小A,小A将信息更新到数据库中,如果是新数据就插入,旧数据就更新之前的数据,对外接口就只有查询了。...也就是说,上面的语句,会跟REPLACE INTO ...类似的会将自增ID1,但实际记录没有加,这是为什么呢?...查了资料之后,小A得知,原来,mysql主键自增有个参数innodb_autoinc_lock_mode,他有三种可能只0,1,2,mysql5.1之后加入的,默认值是1,之前的版本可以看做都是0。...此处 @总是迟到 多谢指出,看官方文档理解错了 模式0的话就是不管什么情况都是加上表锁,等语句执行完成的时候在释放,如果真的添加了记录,将auto_increment1。...ON DUPLICATE KEY UPDATE ...语句拆开,先去查询,然后去更新,这样就可以保证主键不会不受控制的增大,但增加了复杂性,原来的一次请求可能变为两次,先查询有没有,然后去更新。

    5K20

    『叶问』#40,MySQL进程号、连接ID查询ID、InnoDB线程与系统线程如何对应

    一文快速掌握 MySQL进程号、连接ID查询ID、InnoDB线程与系统线程的对应关系。 有时候,怀疑某个MySQL内存查询导致CPU或磁盘I/O消耗特别高,但又不确定具体是哪个SQL引起的。...不过本文想讨论的是,MySQL的进程ID、内部查询ID、内部线程ID,和操作系统层的进程ID、线程如何对应起来。...ID查询ID等的关系 从MySQL 5.7开始,performance_schema.threads 表增加 THREAD_OS_ID 列,用于记录MySQL内部线程对应的系统线程ID。...Lef | grep 58412 <-- 上面查询pfs.threads看到 THREAD_OS_ID 列的值 mysql 38801 1 58412 0 40 14:46 ?...# MySQL连接ID=25,OS线程句柄 = 140442126739200(后面再介绍),查询ID=87(对应上面的 STATEMENT_IDMySQL thread id 25, OS thread

    2.2K21

    mysql 联合查询_MySQL联合查询

    MySQL联合查询 联合查询:union,将多次查询(多条select语句)的结果,在字段数相同的情况下,在记录的层次上进行拼接。...执行如下 SQL 语句,进行测试: — 联合查询,字段数相同,类型不同 select id, grade, room from class union distinct select name, age..., id from student; 如上图所示,联合查询只保留了第一张表的字段,而不保留第二张表的字段。...意义 联合查询的意义有两种,分别为: 查询同一张表,按时需要不同,例如查询学生信息,要求男生按年龄升序排序,女生按年龄降序排序; 多表查询,多张表的结构是完全一样的,保持的数据结构也是一样的。...根据我们刚刚学到的联合查询,貌似很容易啊!

    18.7K30
    领券