我发现底部的代码在我的服务器上执行超过10分钟。服务器本身非常好,我找不到任何合适的解释。 我正在使用Joomla 1.6.3,使用jUpgrade从Joomla 1.5.23迁移数据,MySQL客户端版本为5.1.45。
SELECT a.*,COUNT(DISTINCT m1.id) AS count_published,COUNT(DISTINCT m2.id) AS count_unpublished,COUNT(DISTINCT m3.id) AS count_trashed
FROM `j16_menu_types` AS a
LEFT JOIN `j16_menu` AS m1 ON m1.menutype = a.menutype AND m1.published = 1
LEFT JOIN `j16_menu` AS m2 ON m2.menutype = a.menutype AND m2.published = 0
LEFT JOIN `j16_menu` AS m3 ON m3.menutype = a.menutype AND m3.published = -2
GROUP BY a.id
ORDER BY a.id asc;
如果有人可以帮助我,我会很高兴,因为我遇到了大麻烦:)
P.S。我已经下载了db并在我的计算机上检查过它 - 仍然是相同的,执行时间很糟糕。有什么方法可以解决这个问题吗?或者也许删除这个SQL部分没有重大管理joomla? 好吧,它在我的电脑上运行得相当快,但结果仍远远不能满足我的需求。
EDIT 好吧,我发现了这个问题的报告错误。 http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=24868
解决方案是:
CREATE INDEX idx_menu_published ON j16_menu (published);
但是,我不确定这会如何影响管理。我有人可以简单地告诉我这部分是如何工作的,我应该编辑Joomla核心代码还是只在mysql上使用上面的代码一次。我想知道每次编辑菜单时是否应该索引表。
答案 0 :(得分:1)
如果您不介意比较,数据库/表索引只是一种黄页。它会自动更新。如果此索引修复了您的问题,那么您无需再做其他任何事情。你也不能破坏任何东西 - 所以试试吧。