Hej
Jeg har et problem da jeg ikke forstår hvorfor MySQL ikke bruger index på
denne query:
SELECT userlist.user_id, userlist.user_name
FROM userlist
LEFT JOIN userlinks ON userlinks.to_id = userlist.user_id AND
userlinks.from_id = 2
WHERE (userlinks.from_id = 2 and userlinks.state = 1) OR userlist.user_id =
2.
Explain:
table type possible_keys key key_len ref rows Extra
userlist ALL PRIMARY,user_id 13
userlinks ALL from_id,to_id 24 where used
Hvorfor er scanner den ALL på userlinks når der 2 possible_keys?
Mine tables:
CREATE TABLE userlinks (
from_id mediumint(8) unsigned DEFAULT '0' NOT NULL,
to_id mediumint(8) unsigned DEFAULT '0' NOT NULL,
state tinyint(3) unsigned DEFAULT '0' NOT NULL,
last_time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
KEY from_id (from_id),
KEY to_id (to_id)
);
CREATE TABLE userlist (
user_id mediumint(8) unsigned DEFAULT '0' NOT NULL auto_increment,
user_name varchar(50) NOT NULL,
PRIMARY KEY (user_id),
KEY user_id (user_id)
);
Nogen der kan give lidt hjælp. Jeg er ikke blevet blevet klogere af
www.mysql.com
/ morten