mysql - WordPress 数据库查询太慢

标签 mysql wordpress performance query-performance

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

在数据库中,我有 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 秒,第二次运行几乎是即时的。

有什么想法吗?

最佳答案

有两件事需要尝试。

首先,您的“驱动”表是基于您的 WHERE 子句的 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。如果您需要语法,请告诉我

关于mysql - WordPress 数据库查询太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546761/

相关文章:

MySQL选择查询忽略特殊字符

c# - 获取MySQL多行数据并显示在单独的文本框中

c++ - 与非常轻量级的 "DEFINE NATIVE ENTRY"函数相比,为什么 Dart 中的原生包装函数如此重量级?

php - 在 woocommerce 的结帐页面中显示更新的数据

html - 使用 overflow-y : scroll; 时减少滚动卡顿

objective-c - 静态/堆栈和堆内存之间的主要速度差异

php - 如何使用 PHP 将多个单页 TIFF 合并为 PDF?

mysql - GROUP_CONCAT 上的 ORDER BY 日期时间不起作用

javascript - 如果类存在,则在表单字段中显示值

javascript - 文本调整大小仅适用于部分内容