ฉันมีคีย์ผสมที่ไม่ซ้ำกันเช่น fr (fromid, toid) ในตารางเมื่อฉันเรียกใช้แบบสอบถามด้วยคำอธิบายฉันได้รับผลลัพธ์ต่อไปนี้:
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 เป็นเท็จเสมอ
แต่ในแบบสอบถามที่ฉันได้รับผลที่ฉันต้องการที่ส่วนหนึ่งไม่ได้WHERE
false
มีใครบ้างที่สามารถอธิบายเรื่องนี้และให้ความกระจ่างในเรื่องนี้ได้บ้าง?
using index
เพิ่มพิเศษแทนimpossible...
SELECT COUNT(1) FROM relationship WHERE fromid=78 AND toid=60;
ผลตอบแทนอะไร???