安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

书写高质量sql的一些建议

4月16日 碎骨族投稿
  老生常谈的不要使用select如果硬要使用select,那么就请忍受一下以下几种可能会出现的问题select每次都把所有的字段查询出来,但并不是每个字段都是必要的,会造成额外的传输带宽资源,性能不可取在完成分析之后,MySql会进行优化,也就是选择执行效率最高的(Mysql自己认为的,但并不一定是最优),使用select会阻碍优化器选择更优的执行计划,比如走索引查询增加或删除字段的时候代码会出现问题,典型的就是如果添加一个新字段,但是实体映射忘记添加,程序会出错仅查一条数据的时候,使用LIMIT1当某个业务你确信只会返回一行数据,就可以使用LIMIT1来告诉执行引擎找到一行记录后就停止下来,而不是继续往下查下一条满足的记录,性能会好一点使用unionall替代unionunionall和union的区别在于前者不会对数据进行去重,后者会去重,所以如果确信业务中不会存在重复的记录值,使用unionall效率会更高where后面尽量不要使用or来连接查询条件如果硬要使用or,那么就代表你要放弃走索引,选择全表扫描可以采用unionall
  where后面谨慎使用innotin,like使用in、notin、like,其实还是会有走索引的时候的in、notin在数量不多的时候,索引级别会去到range,一旦超出数量,索引也是会失效的,采用全表扫描like只有一种情况会走索引,那就是确定前缀情况,如下例子就是确定前缀是以abc开头的可以使用exists来替换in,但是得视乎于场合;如果是一个连续的区间值,可以使用betweenand来替代如果还是要做模糊索引,可以选择建立fulltext索引,或者直接走其他高效方式,例如ES等关于exists和in的选择exists是先遍历外表,然后看外表中的记录有没有跟内表中的匹配,适合内表较大,外表较小的情况in是先遍历内表,然后将内表与外表做一个笛卡尔积,适合内表比较小的情况联合索引需要遵循最左匹配原则索引可以是一个列字段,也可以是多个列字段组成的联合索引,对于最左匹配原则,要从最左边作为起点开始匹配,而后如果遇到范围查询就会停止匹配,所以如果建立一个索引值为(a,b,c,d),那么where后面的条件必须是以a开头才能确保能走索引,如果其中c是一个范围查询(,,between,like),那么后续的d就走不到索引了优先考虑在where以及orderby涉及的列上建立索引索引区分度公式:count(distinct(col))count(),表示字段不重复的比率,比率越高,扫描的记录就会越少,效率自然也就越高where后面接的是条件查询,orderby是做分组,是做索引的好时机索引列要保持干净,一定不能参与计算和使用函数,否则索引会失效且看例子,索引有效
  使用了substring函数操作索引列,索引失效
  相似的还有,四则运算也会使得索引失效
  能使用覆盖索引就使用覆盖索引得先了解,聚簇索引和非聚簇索引这俩概念聚簇索引:以主键创建的索引,叶子节点上存放的直接就是数据非聚簇索引:非主键创建的索引,叶子节点上存的是主键索引列,查询的时候先取得主键,然后通过主键去查,所以也称为二级索引,而拿到主键回查这个动作叫做回表而如果查询的列恰好是非聚簇索引的列,那么就不需要回表操作了,因为回表还需要操作一次,效率肯定是比不上不回表的,而该非聚簇索引也被称为覆盖索引join联表查询不要太多这里面的不要太多,究竟如何定义,阿里巴巴Java开发手册(泰山版)是这么描述的
  而从另外一篇博客上面,MySql建议join联表查询最大不要超过7传送门我个人的理解就是,join联表个数太多肯定是会影响效率的,如果真的有业务需要如此操作,不妨先考察一下是不是业务设计上出现了问题,然后再优化联表查询,实在是需要的,也要像阿里巴巴开发手册说的,做好索引,测试好SQL的性能联表查询要关注表之间的字符集是否一致字符集不一致的,join的时候索引会失效,之前就发现过开发环境跟生产环境不一致的情况,这个真的得review好如果有需要到一批数据的插入或者更新,请使用批量操作,不要一条一条的操作
  原文链接:书写高质量sql的一些建议码农Amg博客园
投诉 评论 转载

产品尚未发布,iPhone13Pro保护壳已出,看看有啥特点本周三凌晨,万众期待的iPhone13系列手机将发布,这可以说是下半年数码领域,甚至是消费领域的一件大事。虽然大家对于手机的外形已经基本知晓,但在最终发布的前一刻,可能还……三星GalaxyS21FE开学季海报你准备好了吗?根据媒体爆料,三星将会在近期为新一代GalaxyS21系列推出全新的GalaxyS21FE机型,将以与旗舰相同的核心配置和更亲民的售价和大家见面,受到了不少消费者的期待。……撇开爱国情怀,如果华为手机跟苹果手机一样的价格,不会选择哪个买华为!华为贵也买!买华为绝不选苹果,人到中年的那一丢丢倔强。人在江湖,哪有抛开爱国情怀一说谁性价比好重谁,不要道德绑架!!!!这么说吧!要……家电清洗哪家强?前段时间在后台曾收到网友提问,家电用久了需要清洗吗?自己清洗怕洗完就报废了,拆了还装不上。找专业的也不知道贵不贵,哪里找。下面就来简单分析一下。关于第一个问题很多人……WindowsAzure虚拟机上的SQLServer是什么?Azure虚拟机上的SQLServer允许你在云中使用完整版本的SQLServer,而不需管理任何本地硬件。使用标准预付费套餐时,SQLServer虚拟机(VM)还可以简化许可……销售收入减少2545亿,研发投入却跃居世界第二,华为要走向何华为虽然销售收入减少,但5G专利费收入却很可观,所以仍可加大科研投入。为了将来,即使放慢暂时的直接投资。加大科研力度也是值得的。华为要带领志同道合者走向国家自强之路……预算1500元以内,这3款手机好评最多,都是低价高配款很多人奇怪自己为什么买手机总买不到低价高配的,那是你选错了方向,根据你的预算来选肯定错不了,5000块看影像看性能看续航,3000看续航看性能,2000以下看续航看体验,我汇总……四小龙变四小虫?AI独角兽们的AI故事好不好讲?5月17日,《广东省社会信用条例》发布,明确禁止采集疾病、生物识别等自然人信息。早前,天津、杭州、南京等多地开始立法严控人脸识别,甚至要求拆除售楼处、物业等人脸识别设备。……一芯难求的原因在哪?一蕊难求的原因主要是国内体制问题。国内专家如果申请课题,国家拨款以后搞不出来芯片怎么办?个人的名声怎么办?科研不一定100成功,谁能打保票呢?如果是民营企业家投资,辛苦多年积攒……18650电池充不进电怎么办?应该是电池饿死了,也就是过放电。救援方法很简单,用一条USB充电线,剪掉手机充电头那端,露出四条线,红线为正极,黑线为负极。剥去绝缘皮,露出铜线。USB端插入手机充电器,红线接……从事Java程序员五年的艰辛之路月薪从3k到18k,我整整花先说一下自己的个人情况,大专生,16年通过校招进入广州光汇科技软件公司,干了接近3年的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而……书写高质量sql的一些建议老生常谈的不要使用select如果硬要使用select,那么就请忍受一下以下几种可能会出现的问题select每次都把所有的字段查询出来,但并不是每个字段都是必要的,会造成额外的……
2022最全的蓝牙音箱选购攻略手机充电一夜不拔,有坏处吗?3月安卓系手机好评榜出炉,三星第一,小米第二,华为第三这不得扣工资?vivo官方商城提前上架下月将发布的vivoX首发丨阿童木机器人完成数千万B1轮融资,将进行新厂房厂能扩建vivo取消大小周实施双休?大热的ESG是怎么改变大厂的?谁是郭台铭痛恨的人?比亚迪富士康恩怨录中企被踢出果链后,年亏损高达27亿元,如今终于醒悟陈经玩区块链游戏能挣钱?骗局倪光南最辉煌的时光是不是和柳传志的那段蜜月期?全屋智能家居欧瑞博MixPad精灵开关的应用场景机务也有黑科技?VR训练了解一下

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利