테이블에 fr (fromid, toid)와 같은 고유 한 복합 키가 있는데, Explain으로 쿼리를 실행하면 다음 결과가 나타납니다.
Impossible WHERE noticed after reading const tables`
내가 실행 한 쿼리 :
explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60
어떤 도움?
EDIT1 :
아래 쿼리를 사용할 때 :
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t'
내가 볼 USING WHERE
대신 이전 메시지의,하지만 난 쿼리 아래를 사용하는 경우 :
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND (is_approved='s' OR is_approved='f' OR is_approved='t')
나는 첫번째 impossible ...
메시지를 다시 받는다 ! 이 괄호는 여기서 무엇을합니까?
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 : mysql 사이트에서 다음과
같이 말합니다.
const 테이블을 읽은 후 주목할 수없는 곳
MySQL은 모든 const (및 시스템) 테이블을 읽었으며 WHERE 절이 항상 false임을 확인했습니다.
그러나 쿼리에서 원하는 결과를 얻지 만 WHERE
부분은 아닙니다 false
. 이것을 설명하고 주제에 대해 약간의 설명을 해줄 사람이 있습니까?
using index
대신 추가됩니다impossible...
SELECT COUNT(1) FROM relationship WHERE fromid=78 AND toid=60;
반환 합니까 ???