SQL优化之索引篇

项目背景

临近下班时间,领导突然反馈了一个问题,测试环境接口查询的结果为null,当时以为是依赖的服务在重启,决定去看一下日志,因为日志不太规范,找了很久很久没找到地方,结果打开了依赖服务的日志,发现有请求结果,并且有返回结果的,然后试了几次请求之后,发现有时有数据,有时没有。最后排查是因为网关层限制了超时时间为5秒,接口查询超过了5秒,果断嘲讽一下 ,这什么sql居然要5秒,然后把sql抓出来,准备去叼那个人时,领导突然说,这个接口是我们团队负责的,果然在心理暗骂前同事,然后只能无奈的去吧sql优化一下,记一下SQL优化过程

使用EXPLAIN关键字

EXPLAIN SELECT
	sn.id AS id,
	sn.title AS title,
	sn.content AS content,
	sn.content_txt AS contentTxt,
	sn.product_id AS productId,
	sn.des_identitys AS desIdentitys,
	sn.first_type_code AS firstTypeCode,
	sn.second_type_code AS secondTypeCode,
	sn.is_push AS isPush,
	sn.des_terminal_code AS desTerminalCode,
	sn.source_terminal_code AS sourceTerminalCode,
	sn.pub_date AS pubDate,
	sn.custom_msg AS customMsg,
	sn.create_date AS createDate,
	sn.link AS link,
	sn.trigger_pub_date AS triggerPubDate,
	sin.read_flag AS readFlag,
	sin.read_date AS readDate,
	sin.receive_code AS receiveCode,
	son.send_code AS sendCode,
	son.identity AS identity,
	son.identity_name AS identityName,
	son.org_code AS orgCode 
FROM
	notice sn
	INNER JOIN notice_out son ON son.notice_id = sn.id
	LEFT JOIN notice_in sin ON sin.notice_id = son.notice_id 
WHERE
	sn.STATUS != 2 
	AND sin.read_flag IS NOT NULL 
	AND sin.STATUS != - 1 
	AND sn.first_type_code IN ( 6 ) 
	AND sin.receive_code =  '634687356619853824' 
	AND sn.des_terminal_code LIKE concat( concat( '%','A02'), '%' ) 
ORDER BY
	sn.create_date DESC 
	LIMIT 0,12

在这里插入图片描述

已经优化了一下,不好去删除了,然后发现 这个索引的的key为空的,然后明显没有走索引,添加join字段的索引

优化结果

在这里插入图片描述
在这里插入图片描述

结果果断的变慢了,真好,慢慢来,又可以去吹我优化了sql了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值