网站SEO优化——数据库SQL优化

如果seo公司不能保证自己的执行力,找专业的SEO优化团队比较靠谱。当前情况逐渐改变。搜索引擎优化主要针对网站。
判断问题SQL。
判断SQL是否有问题时,可以用两个表象来判断
系统级别表象CPU消耗严重IO等待严重页面响应时间过长的日志超时等错误。
使用sar命令,top命令可以看到现在的系统状态。
也可以通过Prometheus、Grafana等监视工具观察系统状态。(有兴趣的人可以读我以前的文章)
SQL语句表象冗长的执行时间过长,从全表扫描中获得数据执行计划的rows、cost较大。
冗长的SQL很容易理解,SQL的阅读性过长肯定会变差,问题的频率肯定会变高。进一步判断SQL问题必须从执行计划开始
执行计划告诉我们,这次查询是扫描Type=ALL,rows大(9950400)基本上可以判断为“有味道”的SQL。
获得问题SQL。
不同的数据库有不同的获取方以下是目前主流数据库的慢速查询SQL获取工具。
MySQL慢查询日志测试工具loadrunnerPercona公司ptquery等工具。
OracleAWR报告测试工具loadrunn_wait等GRIDCONTROL监控工具。
梦想数据库AWR报告测试工具loadrunner等梦想性能监视工具(dem)内部视图如v$sql、v$session_wait等。
SQL的制作技巧。
SQL有以下共同技术
合理使用索引。
索引减少查询缓慢的索引占有空间大,执行增删文件时需要动态维护索引,影响性能。
选择率高(重复值少),频繁引用where需要构建b树索引的一般join列需要构建索引的复杂文档类型查询采用全文索引效率高的索引构建在查询和DML性能之间平衡的复合索引构建时
使用UNIONALL代替UNION。
UNIONALL的执行效率高于UNION,UNION执行时需要重量的UNION需要排序数据。
避免写select*。
执行SQL时,优化器需要将*转换为具体列。每次查询都会返回表格,不能复盖索引。
JOIN字段建议做索引。
一般来说,JOIN字段提前添加索引。
避免复杂的SQL语言。
提高可读性;避免慢速查询的可能性;它可以转换成多个短期查询,并由业务终端处理。
避免where1=1写法。
避免orderbyrand()类似的写法。
RAND()多次扫描数据列。
SQL优化。
执行计划。
完成SQL优化必须阅读执行计划。执行计划告诉我哪里效率低,哪里需要优化。以MYSQL为例,看看执行计划是什么。(各数据库的执行计划不同,需要自己理解)
explainsql。
接下来,用实际优化案例说明SQL优化的过程和优化技术。
优化案例。
表格结构。
中国人民共和国人民共大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会代表大会
三张表相关,查询当前用户当前时间前后10小时的订单情况,并根据订单创建时间进行排序,具体SQL如下。
selecta.seller_id、a.seller_name、b.user_name、c.statefroma、b.seller_name=b.seller_nameandb.user_id=c.user_idand.user_id=17anda.gmt_createndatendatend(NOW)、INTERVAL-600MINUTE_id=17anda.ga.gmatendatendater_AD(NDAD)
查看数据的数量。
原始执行时间。
原始执行计划。
初步优化构想。
SQL中where条件字段类型与表格结构一致,表格user_id为varchar(50)类型,实际SQL中使用的int类型有隐藏的转换,也没有追加索引。将b和c表user_id字段改为int类型。
由于b表和c表相关,b表和c表user_id创建索引。
由于a表与b表有关,a表seller_name字段制作索引。
利用复合索引消除临时表和排名。
初步优化SQL。
altertablebmodify`user_id`int(10)DEFAULTNULL;altertablecmodify`user_id`int(10)DEFAULTNULLL;altertablecadindex`idx_idx_idx(`user_id);altertablexidx_idx_idx_idx_idx_idx(`user_id);altertertabltablex_id_idx_idx_idx_idx_abltablex_ablex_id_idx_ablex_id_id_abltabablex_ididididid_abablex_abablex_idid
查看优化后的执行时间。
查看优化后的执行计划。
查看warnings信息。
继续优化。
altertableamodify“gmt_create”datetimeDEFAULTNULL;
查看执行时间。
查看执行计划。
优化总结。
如果执行计划explain有警告信息,请检查警告信息showwarnings
看SQL相关的表格结构和索引信息。
根据执行计划,考虑可能的优化点。
根据可能的优化点进行表格结构变更、索引增加、SQL改写等操作。
查看优化后的执行时间和执行计划。
如果优化效果不明显,重复第四步操作。
最后。
喜欢的可以关注VX公共编号j。