我在本地机器上。我只在插入|创建|删除后第一次加载页面时收到该错误。然后它加载非常快。然后,如果我修改数据库,第一次(有时是第二次)访问页面时会出现该错误。我不明白。
为什么我在修改数据库后第一次访问该站点时才收到该错误?
$sth = $this->dbh->prepare("SELECT g.t_tree_c_parent AS gp ,h.t_tree_c_parent AS hp
FROM t_tree a INNER JOIN (t_data b, t_data c, t_tree d, t_data e, t_data f, t_tree g, t_tree h, t_tree i)
ON a.t_tree_c_child=b.t_data_c_space
AND b.t_data_c_object=c.t_data_c_object
AND c.t_data_c_space=d.t_tree_c_child
AND d.t_tree_c_parent=e.t_data_c_object
AND e.t_data_c_space=f.t_data_c_object
AND f.t_data_c_space=g.t_tree_c_child
AND g.t_tree_c_parent=h.t_tree_c_child
AND e.t_data_c_space=i.t_tree_c_child
AND i.t_tree_c_parent=?
WHERE a.t_tree_c_child=?");
$sth->execute(array($this->glob['children'], $child)); // <- LINE:183
我将拆分该查询以进行测试。但我问也许我错过了一些东西。
@jcho360 要求更新:
CREATE TABLE `t_data` (
`t_data_c_space` VARCHAR(50) NOT NULL DEFAULT '0.00000000000',
`t_data_c_object` VARCHAR(50) NULL DEFAULT NULL,
`t_data_c_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`t_data_c_space`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TABLE `t_tree` (
`t_tree_c_parent` VARCHAR(50) NOT NULL,
`t_tree_c_child` VARCHAR(50) NOT NULL,
`t_tree_c_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
在 HeidiSQL 中为孩子(在项目中,此查询在递归函数中):
第一次在 db 中进行小更新后第一次为 2.137 秒,然后为 0.000 秒
我开始认为这是 Leandro Barreto 建议的 mysql 缓存。