【发布时间】:2018-01-25 21:27:17
【问题描述】:
我有一个在 MySQL 上运行的 drupal 7 站点。网站上的某些页面加载速度极慢。
我调查了加载时间并确定了罪魁祸首查询,该查询通常需要 10 秒才能在某些页面上执行。在一种情况下,它甚至需要 70 多秒!
查询来自“视图”,该“视图”根据网站分类从网站其他地方生成相关内容的简短列表。
这是一个慢速页面的示例(带有参数):
SELECT node.nid AS nid, node.title AS node_title, node.created AS node_created, 'podcasts:panel_pane_3' AS view_name, RAND() AS random_field
FROM node node
LEFT JOIN (SELECT td.*, tn.nid AS nid
FROM taxonomy_term_data td
LEFT JOIN taxonomy_vocabulary tv ON td.vid = tv.vid
LEFT JOIN taxonomy_index tn ON tn.tid = td.tid
WHERE (tv.machine_name IN ('listen')) ) taxonomy_term_data_node
ON node.nid = taxonomy_term_data_node.nid
LEFT JOIN taxonomy_index taxonomy_index ON node.nid = taxonomy_index.nid
WHERE (( (taxonomy_index.tid IN ('472', '350', '742', '681', '3907', '1541', '411', '636', '990', '7757', '680', '743', '11479', '8106', '566', '2230', '11480', '766'))
AND (node.nid != '191314' OR node.nid IS NULL) )
AND(( (node.status = '1')
AND (node.type IN ('article', 'experiment', 'interview', 'podcast', 'question')) )))
ORDER BY random_field ASC, node_created DESC
LIMIT 5 OFFSET 0
从最初的研究来看,我认为这是添加索引的情况,但相关表的列似乎已经存在索引条目。
因此,我不确定如何进行,如果有人可以帮助我,我真的很重视一些指导吗?
【问题讨论】:
-
谷歌
explain statement -
只需在语句前加上“EXPLAIN ...”。 MySQL 不会执行查询,而是打印一个关于查询执行计划各个方面的信息表。要了解这些,您需要阅读一些documentation。
-
谢谢你们;是的,我已经这样做了,对于没有包括现在添加到上面的输出,我深表歉意。
-
优化 SQL 查询是一门艺术 :) 要有耐心,愿意大量阅读和工作。
-
谢谢;我准备两者都做,但我不知道从哪里开始......
标签: mysql performance optimization