J'ai une clé composée unique comme fr (fromid, toid) dans la table, lorsque j'exécute la requête avec expliquer, j'obtiens le résultat suivant:
Impossible WHERE noticed after reading const tables`
La requête que j'ai exécutée:
explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60
De l'aide?
EDIT1:
Lorsque j'utilise la requête ci-dessous:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t'
Je vois à la USING WHERE
place du message précédent, mais lorsque j'utilise la requête ci-dessous:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND (is_approved='s' OR is_approved='f' OR is_approved='t')
Je reçois à nouveau le premier impossible ...
message! Que font ces parenthèses ici?
EDIT2:
CREATE TABLE `relationship` (
`rid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fromid` mediumint(8) unsigned NOT NULL,
`toid` mediumint(8) unsigned NOT NULL,
`type` tinyint(3) unsigned NOT NULL,
`is_approved` char(1) NOT NULL,
PRIMARY KEY (`rid`),
UNIQUE KEY `fromid` (`fromid`,`toid`),
KEY `toid` (`toid`),
CONSTRAINT `relationship_ibfk_1` FOREIGN KEY (`fromid`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `relationship_ibfk_2` FOREIGN KEY (`toid`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
EDIT3:
Comme le dit le site mysql:
Impossible O noticed remarqué après avoir lu les tables const
MySQL a lu toutes les tables const (et système) et remarque que la clause WHERE est toujours fausse.
Mais dans la requête j'obtiens le résultat que je veux, la WHERE
pièce ne l'est pas false
. Y a-t-il quelqu'un qui pourrait expliquer cela et faire la lumière sur le sujet?
using index
en extra au lieu deimpossible...
SELECT COUNT(1) FROM relationship WHERE fromid=78 AND toid=60;
revient ???