【问题标题】:Wordpress DB query too slowWordpress DB 查询太慢
【发布时间】:2018-03-14 18:41:29
【问题描述】:

自上周三以来,由于 MySQL 查询,我的网站出现了大量性能问题...

在 DB 中,我有 20.000 个帖子和大约 180.000 个元行。

查询如下:

SELECT t.*, tt.*, tr.object_id
FROM az2_terms AS t 
INNER JOIN az2_term_taxonomy AS tt
ON t.term_id = tt.term_id
INNER JOIN az2_term_relationships AS tr
ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE tt.taxonomy IN ('znacka', 'model')
AND tr.object_id IN (27130, 27290, 27822, 27899, 30862, 33536, 33721, 34901, 37448, 37482, 37496, 37522, 37572, 37580, 37742, 37750, 38160, 38165)
ORDER BY t.name ASC

需要将近 20 秒才能完成,这使网站完全无法使用。 我已禁用所有 WP 插件,更改了主题,但没有任何帮助。

我尝试在 MyAdmin 中进行分析,第一次运行大约需要 20 秒,第二次运行几乎是即时的。

有什么想法吗?

【问题讨论】:

  • 您忘记将* 放在t.tt. 之后(或所需的列,如果您不想获取所有表列)。还要确保您的表az2termtaxonomyaz2termrelationships 中有索引在正确的位置
  • 对不起,自从我的 ISP 这样做以来,它已经从这些字符中删除了。查询本身运行良好,但需要很长时间
  • 你有很多帖子和 post_meta 信息。但是此查询与帖子无关,而是与此 aztaxonomy 子系统有关。请看这个,特别注意查询性能部分。 meta.stackoverflow.com/a/271056edit 您的问题提供更多详细信息?如果这是来自插件,那么您的插件供应商可能会比我们获得更好的运气。
  • 请为 3 张桌子提供 SHOW CREATE TABLE。修复索引可能很简单。

标签: mysql wordpress performance query-performance


【解决方案1】:

尝试两件事。

首先,根据您的 WHERE 子句,您的 "driving" 表是 az2_term_taxonomy。尝试用它重写:

SELECT t.*, tt.*, tr.object_id
FROM az2_term_taxonomy AS tt
INNER JOIN az2_term_relationships AS tr
ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN az2_terms AS t  
ON t.term_id = tt.term_id
WHERE tt.taxonomy IN ('znacka', 'model')
AND tr.object_id IN (27130, 27290, 27822, 27899, 30862, 33536, 33721, 34901, 37448, 37482, 37496, 37522, 37572, 37580, 37742, 37750, 38160, 38165)
ORDER BY t.name ASC

其次,使用IN () 查找tr.object_id 通常非常慢。 如果可以,创建一个索引临时表并将这些 id 移动到表中并在其上执行 LEFT JOIN。如果你想要语法,请告诉我

【讨论】:

  • INNER JOIN 中的表顺序无关紧要。优化器将(有效地)重新排序它们以发现“最佳”表开始。
  • @RickJames - 我无法回应假定会发生的事情。但是我遇到过一些情况有所不同,优化器弄错了,切换顺序(基本上是提示最好的表来驱动 JOIN)加快了速度。
  • 好的,这是可行的。但我怀疑这是巧合。
【解决方案2】:

我已经找到了解决方案……嗯 - 至少是问题所在。

当我切换到 HTTPS 时,在导入已编辑的 .sql 文件时出现了一些错误(我认为是重复索引) 不过好像一切正​​常,所以没太在意。

但似乎导入是问题所在。我删除了数据库并导入了备份 - violá,现在一切都很好。

道德是 - 注意错误信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    相关资源
    最近更新 更多