日记大全

日记大全 > 句子大全

提升SQL语句性能的方法

句子大全 2023-01-31 05:09:01
相关推荐

用具体案例进行SQL语句性能提升的方法。

先用实际案例分析了优化SQL语句的方法,然后再结合nat123这个实际案例分析了如何实现外网访问内网Mysql数据库的方法。线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右。

优化方法:优化的总体思路是拆分sql,将排序操作和查询所有信息的操作分开。第一条语句:查询符合条件的数据,只需要查询g.id即可SELECT DISTINCT g.id FROM gm_game g LEFT JOIN gm_cp cp ON cp.id = g.cp_id AND cp.deleted = 0 LEFT JOIN gm_category c ON c.id = g.category_id AND c.deleted = 0 LEFT JOIN gm_type t ON t.id = g.type_id AND t.deleted = 0 WHERE g.deleted = 0 ORDER BY g.modify_time DESC LIMIT 20 ;

第二条语句:查询符合条件的详细数据,将第一条sql的结果使用in操作拼接到第二条的sqlSELECT DISTINCT g.*, cp.name AS cp_name,c.name AS category_name,t.name AS type_name FROM gm_game g LEFT JOIN gm_cp cp ON cp.id = g.cp_id AND cp.deleted = 0 LEFT JOIN gm_category c ON c.id = g.category_id AND c.deleted = 0 LEFT JOIN gm_type t ON t.id = g.type_id AND t.deleted = 0 WHERE g.deleted = 0 and g.id in(…………………) ORDER BY g.modify_time DESC ;

常见的优化SQL语句方法如下:1)拆分SQL语句临时表主要是用于排序和分组,很多业务都是要求排序后再取出详细的分页数据,这种情况下可以将排序和取出详细数据拆分成不同的SQL,以降低排序或分组时临时表的大小,提升排序和分组的效率,我们的案例就是采用这种方法。2)优化业务,去掉排序分组等操作有时候业务其实并不需要排序或分组,仅仅是为了好看或者阅读方便而进行了排序,例如数据导出、数据查询等操作,这种情况下去掉排序和分组对业务也没有多大影响。

接下来用具体案例分析在没有公网IP 的情况下外网访问内网数据库方法:确保内网应用正常。nat123端口映射之全端口映射。在mysql数据库服务器局域网内安装nat123客户端,并使用它。登陆。主面板/端口映射列表/添加映射。设置映射信息。选择全端口映射类型。填写内网mysql数据库服务器IP地址,和外网访问的域名。可以使用自己的域名,也可以使用二级域名。将鼠标放在输入框有向导提示。

外网访问端安装nat123客户端并使用访问者。访问者打开mysql全端口映射后的域名和访问端口。如在添加访问地址时,同时勾选允许局域网访问,则在访问者局域网内都可以访问。在使用访问者本机,可以进行访问mysql数据库。访问地址是本地访问者打开的域名端口。

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新