मेरे पास तालिका में 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 साइट कहती है:
कांस्टेबल टेबल पढ़ने के बाद असंभव कहाँ देखा गया
MySQL ने सभी const (और सिस्टम) टेबल को पढ़ा है और देखा है कि WHERE क्लॉज हमेशा गलत होता है।
लेकिन क्वेरी में मुझे वह परिणाम मिलता है जो मैं चाहता हूं, WHERE
भाग नहीं है false
। क्या कोई ऐसा है जो इस बारे में समझा सकता है और इस विषय पर कुछ प्रकाश डाल सकता है?
using index
impossible...
SELECT COUNT(1) FROM relationship WHERE fromid=78 AND toid=60;
लौटा ???