自上周三以来,由于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秒,第二次运行几乎是即时的。
有什么想法吗?
答案 0 :(得分:0)
要尝试两件事。
首先,根据您的az2_term_taxonomy
条款,您的"驾驶" 表格为WHERE
。尝试重写:
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
其次,使用tr.object_id
进行IN ()
查询通常非常慢。 如果,您可以创建索引临时表并将这些ID移动到表中并对其执行LEFT JOIN。如果你想要语法
答案 1 :(得分:0)
我找到了解决方案......好吧 - 至少是问题。
当我切换到HTTPS时,导入编辑的.sql文件时出现了一些错误(重复索引,我认为) 但是一切似乎都很好,所以我没注意它。
但似乎导入是问题。我删除了数据库并导入了备份 - violá,现在一切都很好。
道德是 - 关注错误信息。