mysql中sql优化的经典案例语句(值得一看)

文章讨论了在数据库表tb_crawl中,通过优化SQL语句来提高更新操作的效率。原始SQL语句在执行时出现了usingfilesort的问题,导致潜在的慢查询。通过改写SQL,利用子查询并联接表,优化后的查询耗时显著降低,从0.032s降至0.015s,从而提高了数据库性能。
摘要由CSDN通过智能技术生成

一  案例1 关联更新、删除

1.1 数据内容

1.表结构

CREATE TABLE `tb_crawl` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `group_name` varchar(255) DEFAULT NULL,
  `group_unit` varchar(255) DEFAULT NULL,
  `device_code` varchar(255) DEFAULT NULL,
  `device_name` varchar(255) DEFAULT NULL,
  `point_code` varchar(255) DEFAULT NULL,
  `state` int(5) DEFAULT '0',
  `desc` varchar(255) DEFAULT NULL,
  `ptype` varchar(255) DEFAULT NULL,
  `paixu` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12743 DEFAULT CHARSET=utf8;

2.表内容

1.2 常规编写的sql

1.sql语句

desc

update tb_crawl set state=1 where id in(
select id from (
select id,state from  tb_crawl where group_unit=2 and state not in(1)  order  by device_code
)as t 
)

2.查看执行效率

3. 可以看到Extra这栏存在:using filesort,如果数据达到一定量级后,存在慢sql的问题。目前耗时:0.032s

 1.3 优化后sql

1.sql语句

desc
update tb_crawl as o  join  (

select id,state from  tb_crawl where group_unit=2 and state not in(0)  order  by device_code 
) as t
on t.id=o.id
set o.state=0

2.优化后

可见优化后sql:耗时0.015s

 8种 专坑 同事的SQL写法,来试试吧

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值