wordpres数据库优化网站查询速度之添加索引原创文章

运维笔记评论88字数 3563阅读模式

前提描述

wordpres数据库优化网站查询速度之添加索引

表现症状

cpu和负载100%或者mysql占用直接超过100%,wordpress的慢日志提示如下。

posts表
SET timestamp=1592795998; SELECT wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND wp_posts.ID NOT IN (20477) AND ( wp_term_relationships.term_taxonomy_id IN (144,177,145,143,153,212,269,136) ) AND wp_posts.post_type IN ('post', 'page', 'attachment', 'bulletin', 'picture', 'video', 'tao', 'sites', 'show') AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 4;
relationships表
SET timestamp=1592795998; SELECT wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND wp_posts.ID NOT IN (20477) AND ( wp_term_relationships.term_taxonomy_id IN (144,177,145,143,153,212,269,136) ) AND wp_posts.post_type IN ('post', 'page', 'attachment', 'bulletin', 'picture', 'video', 'tao', 'sites', 'show') AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 4;

原因分析

这个SQL查询执行缓慢可能是由于多个联接和查询条件的组合,以及没有适当的索引。提高WordPress的慢查询性能通常需要综合考虑数据库结构、索引、服务器硬件和MySQL配置等因素。要优化这个查询,可以采取以下步骤:

解决方式

添加索引

wp_postmeta表的meta_keymeta_value列上添加索引,以加速条件的检索。

索引介绍:

展开小知识

索引是数据库中的一种数据结构,用于提高数据库查询操作的速度和效率。索引的作用包括:

  1. 加速数据检索:索引允许数据库管理系统更快地定位和检索数据行,特别是在大型数据表中。通过索引,数据库可以直接跳到满足查询条件的数据行,而不必扫描整个表。
  2. 提高查询性能:索引可以显著减少查询的执行时间,特别是对于复杂的查询和连接操作。它们允许数据库引擎更快地过滤数据,找到所需的结果。
  3. 优化排序和分组:当执行排序和分组操作时,索引可以加速这些操作,使其更高效。索引有助于避免数据库引擎必须对所有数据进行排序。
  4. 加速连接操作:在多个表之间执行连接操作时,索引可以提高连接操作的性能,减少了数据行的比对时间。
  5. 减少磁盘 I/O:索引通常以树状结构存储,这使得数据库引擎可以更少地读取磁盘上的数据,从而减少了磁盘 I/O 操作,提高了数据库性能。
  6. 约束数据完整性:索引可以用于创建唯一性约束,确保表中的数据不包含重复值。
  7. 支持全文搜索:全文搜索索引允许进行文本搜索,查找包含特定关键词的文本。

需要注意:尽管索引可以提高查询性能,但不合理的索引使用也可能导致性能下降。创建过多的索引或在不必要的列上创建索引可能会导致维护成本增加,并且在插入、更新和删除操作时会降低性能。因此,索引的选择和创建需要根据数据库表的查询需求进行谨慎规划和优化。

确保索引:

确保表中的字段经常用于查询的列都有适当的索引。在WordPress中,通常需要关注wp_postswp_term_relationshipswp_term_taxonomy等表。对于您提供的查询,主要关注的表是wp_posts。您可以考虑为wp_posts表中的IDpost_typepost_statuspost_date字段创建适当的索引。

创建索引:

评论后查看
原创不易此内容为****隐藏内容****评论后,刷新页面即可查看

注意事项

1.请在操作数据之前一定要养成备份、备份、备份、备份、备份、备份、的习惯哦。

2.添加索引之后ceomax主题的博客列表页面可能会摘要显示不正确。请修改对应模板页中的截取数10的位置。

博客模板位置:wp-content/themes/ceomax/template-parts/loop/loop-side.php

文本列表位置:wp-content/themes/ceomax/template-parts/category/category-article.php

echo wp_trim_words( $get_the_content, 10 );

风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系2523030730
免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加联系方式以免受骗。

匿名

发表评论

匿名网友

确定