mysql 临时表 加索引_MySQL漏加索引
NOT IN优化成NOTEXISTS后性能提升了10%,部署新服务器数据量积累到一定数量后发现总有问题:80w数据量的大表(cookie_clean_t)关联不到1w数据量的临时表(co
犯了傻逼的错误,感觉自己真该! NOT IN优化成NOTEXISTS后性能提升了10%,部署新服务器数据量积累到一定数量后发现总有问题:80w数据量的大表(cookie_clean_t)关联不到1w数据量的临时表(cookie_short_run_t)提供的接口很大一部分请求打印的耗时达到4s甚至5s以上,请求设置的3s超时很被动了!当时第一反应也是查看索引,看了几遍都确认索引创建正常,最后百度需求解决方案优化NOTEXISTSmssql 临时表,当时找到的是LEFT JOIN设计,最后测试发现性能更差。 二次优化的SQL语句如下: EXPLAIN SELECT * FROM cookie_clean_t cc LEFT JOIN cookie_short_run_t csr ON cc.uuid=csr.uuid WHERE cc.state=0 AND csr.uuid IS NULL ORDER BY cc.uuid DESC LIMIT 50 EXPLAIN SELECT * FROM cookie_clean_t cc WHERE NOT EXISTS(SELECT csr.uuid FROM cookie_short_run_t csr WHERE csr.uuid=cc.uuid) AND cc.state=0 ORDER BY cc.uuid DESC LIMIT 50 由于表关联处理的业务逻辑比较多,当时还考虑到临时表批量更新大表状态影响了优化的SQL语句,排除了所有可能,最后再次确认索引发现cookie_short_run_t的字段uuid没有创建索引,加上后性能提升55%。 又是为自己的大意买单,猪脑袋真活该! (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |