这些SQL优化技巧握在手面试可以横着走…….docx
《这些SQL优化技巧握在手面试可以横着走…….docx》由会员分享,可在线阅读,更多相关《这些SQL优化技巧握在手面试可以横着走…….docx(18页珍藏版)》请在第壹文秘上搜索。
1、OISQL执行顺序选择表:FROMIefMable链接条件:ON链接:JOIN条件过滤:WHERE分组:GROUPBY聚合函数:AGGFUNC(columnorexpression),.分组过滤:HAVING选择字段:SELECT去重:DISTINCTcolumn,.排序:ORDERBY分页:LIMITcountOFFSETcount02基础SQL优化1、查询SQL尽量不要使用SeleCt*,而是具体字段D反例SELECT*FROMstudent2)正例SELECTiNAMEFROMstudent3)理由字段多时,大表能达到IOO多个字段甚至达200多个字段;只取需要的字段,节省资源、减少网络
2、开销;SeIeCt*进行查询时,很可能不会用到索引,就会造成全表扫描。2、避免在Where子句中使用Or来连接条件查询id为1或者薪水为3000的用户:D反例SELECT*FROMstudentWHEREid=lORsalary=300002)正例使用unionall:SELECT*FROMstudentWHEREid=lUNIONALLSELECT*FROMstudentWHEREsalary=30000分开两条SQL写:SELECT*FROMstudentWHEREid=lSELECT*FROMstudentWHEREsalary=300003)理由使用。r可能会使索引失效,从而全表扫描;
3、对于。r没有索引的SaIary这种情况,假设它走了id的索引,但是走到Salary查询条件时,它还得全表扫描。也就是说整个过程需要三步:全表扫描+索引扫描+合并。如果它一开始就走全表扫描,直接一遍扫描就搞定。虽然mysql是有优化器的,处于效率与成本考虑,遇到Or条件,索引还是可能失效的。3、使用VarChar代替Char1)反例deptnamechar(100)DEFAULTNULLCoMMENT部门名称2)正例deptnamevarchar(100)DEFAULTNULLCoMMENT,部门名称3)理由VarChar变长字段按数据内容实际长度存储,存储空间小,可以节省存储空间;Char按声
4、明大小存储,不足补空格;其次对于查询来说,在一个相对较小的字段内搜索,效率更高。4、尽量使用数值替代字符串类型主键(id):Primarykey优先使用数值类型int,tinyint性别(SeX):0-代表女,1-代表男;数据库没有布尔类型,mysql推荐使用tinyint支付方式(payment):1-现金、2-微信、3-支付宝、4-信用卡、5-银行卡服务状态(state):1-开启、2-暂停、3-停止商品状态(state):1-上架、2-下架、3-删除5、查询尽量避免返回大量数据如果查询返回数据量很大,就会造成查询时间过长,网络传输时间过长。同时,大量数据返回也可能没有实际意义。如返回上千
5、条甚至更多,用户也看不过来。通常采用分页,一页习惯10/20/50/100条。6、使用explain分析你SQL执行计划SQL很灵活,一个需求可以很多实现,那哪个最优呢?SQL提供了explain关键字,它可以分析你的SQL执行计划,看它是否最佳。EXPlain主要看SQL是否使用了索引。EXPLAINSELECT*FROMstudentWHEREid=l返回结果:JdjelcjypcableItypepoaible_kyekeyky_lenrfroveExtraIIlSIKPLtacudentIPRIMARYPRIKRY4contX7、是否使用了索引及其扫描类型type:ALL全表扫描,没有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 这些 SQL 优化 技巧 在手 面试 可以 横着走