Bonjour,

Comment tracer dans une table log les requêtes SQL executées et connaitre le coût.
Tous mes ordres SQL sont dans une classe du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
 
	class FAQ
	{
		private $insert;
		private $selectAll;
		private $selectOne;
		private $delete;
		private $update;
 
		public function __construct($db)
		{
			$this-> insert = $db->prepare("insert into scf_faq (Sujet_FAQ, Connecte_Uniquement) 
											values (:Sujet_FAQ, :Connecte_Uniquement)");
			$this-> delete = $db->prepare("delete from scf_faq where id_FAQ = :id_FAQ");
			$this-> update = $db->prepare("update scf_faq  set Sujet_FAQ = :Sujet_FAQ, Connecte_Uniquement = :Connecte_Uniquement where id_FAQ = :id_FAQ");
			$this-> selectAll = $db->prepare("select * from scf_faq where Connecte_Uniquement in (0, :Connecte_Uniquement)");
			$this-> selectOne = $db->prepare("select * from scf_faq where id_FAQ = :id_FAQ");
		}
 
		public function insert($Sujet_FAQ, $Connecte_Uniquement)
		{
			try {
				$this -> insert -> execute(array(':Sujet_FAQ' => $Sujet_FAQ, ':Connecte_Uniquement' => $Connecte_Uniquement));
				return $this->insert->rowCount();
			}
			catch (PDOException $e)	{
				echo '<h1 id="msgerreur">class_FAQ.insert - Erreur lors de l\'insertion <br/></h1>';
				die('<br><strong>Erreur : ' . $e->getMessage()) . "</strong></h4>";
			}
		}
 
		public function selectAll($Connecte_Uniquement)
		{
			try {
				$this -> selectAll -> execute(array(':Connecte_Uniquement' => $Connecte_Uniquement));
				return $this->selectAll->fetchAll();
			}
			catch (PDOException $e)	{
				echo '<h1 id="msgerreur">class_FAQ.selectAll - Erreur <br/></h1>';
				die('<br><strong>Erreur : ' . $e->getMessage()) . "</strong></h4>";
			}
		}
 
		public function selectOne($id_FAQ)
		{
			try {
				$this -> selectOne -> execute(array(':id_FAQ' => $id_FAQ));
				return $this->selectOne->fetch();
			}
			catch (PDOException $e)	{
				echo '<h1 id="msgerreur">class_FAQ.selectOne - Erreur <br/></h1>';
				die('<br><strong>Erreur : ' . $e->getMessage()) . "</strong></h4>";
			}
		}
 
		public function delete($id_FAQ)
		{
			try {
				$this -> delete -> execute(array(':id_FAQ' => $id_FAQ));
				return $this->delete->rowCount();
			}
			catch (PDOException $e)	{
				echo '<h1 id="msgerreur">class_FAQ.delete - Erreur <br/></h1>';
				die('<br><strong>Erreur : ' . $e->getMessage()) . "</strong></h4>";
			}
		}
 
		public function update($id_FAQ, $Sujet_FAQ, $Connecte_Uniquement)
		{
			try {
				$this -> update -> execute(array(':id_FAQ' => $id_FAQ, ':Sujet_FAQ' => $Sujet_FAQ, ':Connecte_Uniquement' => $Connecte_Uniquement));
				return $this->update->rowCount();
						}
			catch (PDOException $e)	{
				echo '<h1 id="msgerreur">class_FAQ.update - Erreur lors de la MAJ <br/></h1>';
				die("<br><strong>Erreur : " . $e->getMessage() . "</strong></h4>");
			}
		}
	}
?>
Je constate des lenteurs sur mon site. Mais avant de dire que c'est hébergeur, j'aimerai m'assurer que mes ordres SQL ne sont pas trop coûteux.
J'ai regardé par EXPLAIN les pages qui paraissent lentes et je passe par les index.
Par moment, c'est lent, d'autres très rapides alors que je récupère les mêmes infos.

C'est pour cela que j'aimerai stocker les ordres exécutés et analyser ensuite.

Merci pour votre aide.

Eddy