文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SQL开发规范中的有哪些误区

2024-04-02 19:55

关注

这篇文章主要介绍“SQL开发规范中的有哪些误区”,在日常操作中,相信很多人在SQL开发规范中的有哪些误区问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL开发规范中的有哪些误区”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、假设一个表同时有两个索引,idx_int_c1,idx_varchar_c2在:select*from tb where c1=100000 or c2='zhishutang';这个SQL会用到哪个索引?为什么?

大多数人都会选择第一个。其实选择任何一个索引都是错误的。大多数企业都会基于CPU,或者说基于成本优化。如果按照c1来算,两个条件同时满足,它会选择靠前的;如果只能满足一个,它会选择最优的,这是成本优化最核心的原理,选择最适合的状态。从成本优化的角度,应该谁处于空闲,谁就去工作。不一定是运程最快,最重要的是合适。

2、还有,如何判断SQL运行的时候,哪个最好。

SQL开发规范中的有哪些误区

比如上图中:一个是不加limit,一个是加了limit,如果整体时间都在1S以下,哪一个最好?很多人会说,肯定是加了limit的好。但是,如何证明?

在优化之前,在终端上做下状态刷新,分别执行这两个SQL。然后对比数据。比如第一个SQL之前是1个Key,后来读了17次。而第二个SQL是从1个Key开始读了4次。这说明第二个动作少,效果更好。所以,判断一个SQL好还是坏,是可以量化的。

3、另外是关于delete优化的问题。之前,有一个人求助,说一个delete语句执行了2个多小时了,还没执行完,能不能把这个SQL回滚?答案是不能,如果你直接回滚,会死得更惨。

评价一个SQL能不能回滚,或者说进行到什么程度?大家都有同样一个感受是,有一个进度条该多好。但事实是,SQL没有。有很多人很暴力,遇到这种情况会直接重启。不重启会卡死,因为它阻塞了后面的任务,SQL不能查询。

笔者建议不要暴力重启,先执行一个“show engine innodb status\G”语句,这样能看到执行时间。如果没有运行状态,就可以Kill掉。

到此,关于“SQL开发规范中的有哪些误区”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯