Hi there,
I have some troubles understanding what happens with one of my queries.
Here is the table structures.
There is a tiny dataset within (less than 5000 entries in each).
CREATE TABLE tracker_artifact ( id int(11) NOT NULL auto_increment, tracker_id int(11) NOT NULL, last_changeset_id int(11) NOT NULL, submitted_by int(11) NOT NULL, submitted_on int(11) NOT NULL, use_artifact_permissions tinyint(1) NOT NULL default ‘0’, PRIMARY KEY (id), KEY idx_tracker_id (tracker_id), KEY idx_my (submitted_by,tracker_id,last_changeset_id), KEY idx_last_changeset_id (last_changeset_id,id)) ENGINE=MyISAM AUTO_INCREMENT=2842 DEFAULT CHARSET=utf8;CREATE TABLE tracker_changeset ( id int(11) NOT NULL auto_increment, artifact_id int(11) NOT NULL, submitted_by int(11) default NULL, submitted_on int(11) NOT NULL, email varchar(255) default NULL, PRIMARY KEY (id), KEY artifact_id (artifact_id,id)) ENGINE=MyISAM AUTO_INCREMENT=3342 DEFAULT CHARSET=utf8;
Then I have a query that looks like that:
SELECT c.idFROM tracker_changeset AS c INNER JOIN tracker_artifact AS a ON (a.id = c.artifact_id)WHERE a.id IN (928,933,934,…) AND c.id IN (1398,1432,…);
But the 2 ranges are quite big (~1900 values in each) and the query is taking a lot of time (8s) but I don’t undestand why.
Even explain is taking ages:
±—±------------±------±------±--------------------±------------±--------±-------------±-----±-------------------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |±—±------------±------±------±--------------------±------------±--------±-------------±-----±-------------------------+| 1 | SIMPLE | a | range | PRIMARY | PRIMARY | 4 | NULL | 1909 | Using where; Using index | | 1 | SIMPLE | c | ref | PRIMARY,artifact_id | artifact_id | 4 | a.id | 1 | Using where; Using index | ±—±------------±------±------±--------------------±------------±--------±-------------±-----±-------------------------+2 rows in set (3.33 sec)
2 questions arise:
→ What I’m doing wrong there
→ What is the impact of huge IN() statements?