Saya memiliki kunci majemuk unik seperti fr (fromid, toid) di tabel, ketika saya menjalankan kueri dengan menjelaskan saya mendapatkan hasil berikut:
Impossible WHERE noticed after reading const tables`
Kueri yang saya jalankan:
explain SELECT rid FROM relationship WHERE fromid=78 AND toid=60
Ada bantuan?
EDIT1:
Ketika saya menggunakan permintaan di bawah ini:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND is_approved='s' OR is_approved='f' OR is_approved='t'
Saya melihat USING WHERE
bukannya pesan sebelumnya, tetapi ketika saya menggunakan kueri di bawah ini:
explain SELECT rid FROM relationship WHERE fromid=60 and toid=78 AND (is_approved='s' OR is_approved='f' OR is_approved='t')
Saya kembali mendapatkan impossible ...
pesan pertama ! Apa yang dilakukan kurung ini di sini?
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:
Seperti yang dikatakan situs mysql:
Mustahil DI MANA memperhatikan setelah membaca tabel const
MySQL telah membaca semua tabel const (dan sistem) dan perhatikan bahwa klausa WHERE selalu salah.
Tetapi dalam kueri saya mendapatkan hasil yang saya inginkan, WHERE
bagiannya tidak false
. Apakah ada seseorang yang bisa menjelaskan hal ini dan menjelaskan masalah ini?
using index
tambahan bukanimpossible...
SELECT COUNT(1) FROM relationship WHERE fromid=78 AND toid=60;
kembali ???