国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

你不会还在用这8个错误的SQL写法吧?

发布时间:2019/09/22标签:   语句    点击量:

原标题:你不会还在用这8个错误的SQL写法吧?
1、LIMIT 语句分页查问是最罕用的场景之一,但也平日也是最轻易出成绩的处所。比方关于上面简略的语句,个别 DBA 想到的方法是在 type, name, create_time 字段上加组合索引。如许前提排序都能无效的应用到索引,机能敏捷晋升。SELECT*FROMoperationWHEREtype='SQLStats'ANDname='SlowLog'ORDERBYcreate_timeLIMIT1000,10;好吧,能够90%以上的 DBA 处理该成绩就到此为止。但当 LIMIT 子句酿成 “LIMIT 1000000,10” 时,顺序员依然会埋怨:我只取10笔记录为甚么仍是慢?要晓得数据库也并不晓得第1000000笔记录从甚么处所开端,即便有索引也须要重新盘算一次。呈现这类机能成绩,少数情况下是顺序员偷懒了。你不会还在用这8个错误的SQL写法吧?在前端数据扫瞄翻页,或许大数据分批导出等场景下,是能够将上一页的最大值当做参数作为查问前提的。SQL 从新计划以下:SELECT*FROMoperationWHEREtype='SQLStats'ANDname='SlowLog'ANDcreate_time>'2017-03-1614:00:00'ORDERBYcreate_timelimit10;在新计划下查问时光基础牢固,不会跟着数据量的增加而产生变更。2、隐式转换SQL语句中查问变量和字段界说范例不婚配是另一个罕见的过错。比方上面的语句:mysql>explainextendedSELECT*>FROMmy_balanceb>WHEREb.bpn=14000000123>ANDb.isverifiedISNULL;mysql>showwarnings;|Warning|1739|Cannotuserefaccessonindex'bpn'duetotypeorcollationconversiononfield'bpn'此中字段 bpn 的界说为 varchar(20),MySQL 的战略是将字符串转换为数字以后再比拟。函数感化于表字段,索引生效。上述情形能够是利用顺序框架主动填入的参数,而不是顺序员的原意。当初利用框架许多很复杂,应用便利的同时也警惕它能够给本人挖坑。3、关系更新、删除固然 MySQL5.6 引入了物化特征,但须要特殊留神它现在仅仅针对查问语句的优化。关于更新或删除须要手工重写成 JOIN。比方上面 UPDATE 语句,MySQL 现实履行的是轮回/嵌套子查问(DEPENDENT SUBQUERY),其履行时光可想而知。UPDATEoperationoSETstatus='applying'WHEREo.idIN(SELECTidFROM(SELECTo.id,o.statusFROMoperationoWHEREo.group=123ANDo.statusNOTIN('done')ORDERBYo.parent,o.idLIMIT1)t);履行打算:+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+|1|PRIMARY|o|index||PRIMARY|8||24|Usingwhere;Usingtemporary||2|DEPENDENTSUBQUERY||||||||ImpossibleWHEREnoticedafterreadingconsttables||3|DERIVED|o|ref|idx_2,idx_5|idx_5|8|const|1|Usingwhere;Usingfilesort|+----+--------------------+-------+-------+---------------+---------+---------+-------+------+-----------------------------------------------------+

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号