Tôi có một khóa ghép duy nhất như fr (fromid, toid) trong bảng, khi tôi chạy truy vấn với giải thích tôi nhận được kết quả sau:
Impossible WHERE noticed after reading const tables`
Truy vấn tôi đã chạy:
explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60
Có ai giúp đỡ không?
EDIT1:
Khi tôi sử dụng truy vấn dưới đây:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t'
Tôi thấy USING WHEREthay vì tin nhắn trước đó, nhưng khi tôi sử dụng truy vấn bên dưới:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND (is_approved='s' OR is_approved='f' OR is_approved='t')
Tôi lại nhận được impossible ...tin nhắn đầu tiên ! Những dấu ngoặc đơn này làm gì ở đây?
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
Không thể nhận thấy WHERE sau khi đọc bảng const
MySQL đã đọc tất cả các bảng const (và hệ thống) và lưu ý rằng mệnh đề WHERE luôn luôn sai.
Nhưng trong truy vấn tôi nhận được kết quả tôi muốn, WHEREphần thì không false. Có ai đó có thể giải thích điều này và làm sáng tỏ chủ đề này?
using indexthêm thay vìimpossible...
SELECT COUNT(1) FROM relationship WHERE fromid=78 AND toid=60;???