私はローカルマシンを使用しています。挿入|作成|削除後に初めてページをロードしたときにのみ、このエラーが発生します。その後、非常に高速にロードされます。次に、データベースを変更すると、最初に(場合によっては2回目)ページにアクセスしたときにそのエラーが発生します。理解できません。
データベースを変更した後、初めてサイトにアクセスしたときにのみエラーが発生するのはなぜですか?
$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秒
私はそれがLeandroBarretoによって提案されたmysqlキャッシングだと思い始めました。