Hi, have you created an index on (id, testId) ? i can't see the other indexes ? The only ones are the PK and testStudent, so the PK is used.
Mathias Selon Sajith A <[EMAIL PROTECTED]>: > I was trying to analyze a query that was taking almost 4 seconds to > execute. While trying to create additional indexes - found that the > query is not using any index from table qb_test_result . The type > returned is ALL for qb_test_result . > > I have given the tables and query below. It would have been a help if > some one could throw some light on why this is behaving so.. I tried > to read the mysql manual and follow the > steps given there. > > > CREATE TABLE `qb_question` ( > `id` int(11) NOT NULL auto_increment, > `question` text NOT NULL, > `url` varchar(255) NOT NULL default '', > `file` varchar(255) NOT NULL default '', > `marks` int(11) NOT NULL default '0', > `detailedAnswer` text NOT NULL, > `author` int(11) NOT NULL default '0', > `testId` smallint(4) NOT NULL default '0', > `loId` int(11) NOT NULL default '0', > `needWrittenAnswer` enum('Y','N') NOT NULL default 'Y', > `archive` enum('Y','N') NOT NULL default 'N', > PRIMARY KEY (`id`), > KEY `testId` (`testId`,`archive`) > ) TYPE=MyISAM ; > > CREATE TABLE `qb_test` ( > `id` smallint(4) NOT NULL auto_increment, > `categoryId` int(11) NOT NULL default '0', > `title` varchar(80) NOT NULL default '', > `description` text NOT NULL, > `instructions` text NOT NULL, > `author` int(4) NOT NULL default '0', > `type` enum('PUBLIC','POST','PRE','REV') default NULL, > `duration` smallint(6) NOT NULL default '0', > `passrate` float NOT NULL default '0', > `showDetails` enum('Y','N') NOT NULL default 'Y', > `showRandom` enum('Y','N') NOT NULL default 'Y', > `showAssessment` enum('N','Y') NOT NULL default 'N', > `noOfQuestions` int(11) NOT NULL default '0', > `dateAvailable` datetime NOT NULL default '0000-00-00 00:00:00', > `companyId` int(11) NOT NULL default '0', > `archive` enum('Y','N') NOT NULL default 'N', > PRIMARY KEY (`id`), > KEY `title` (`title`,`author`,`type`), > KEY `categoryId` (`categoryId`), > KEY `companyAuthor` (`companyId`,`author`) > ) TYPE=MyISAM ; > > > CREATE TABLE `qb_test_result` ( > `id` int(11) NOT NULL auto_increment, > `testId` smallint(4) NOT NULL default '0', > `studentId` int(11) NOT NULL default '0', > `marks` smallint(4) NOT NULL default '0', > `startTime` int(20) default NULL, > `endTime` int(20) default NULL, > `percentage` float NOT NULL default '0', > `status` enum('FAIL','PASS','POST','UNCOMPLETE') NOT NULL default > 'UNCOMPLETE', > PRIMARY KEY (`id`), > KEY `testStudent` (`testId`) > ) TYPE=MyISAM ; > > > CREATE TABLE `qb_test_result_details` ( > `sequenceId` int(20) NOT NULL default '0', > `resultId` int(20) NOT NULL default '0', > `questionId` int(20) NOT NULL default '0', > `viewStatus` enum('NV','V','A') NOT NULL default 'NV', > `bookMark` enum('Y','N') NOT NULL default 'N', > `correct` enum('Y','N') NOT NULL default 'N', > `postMarks` int(11) NOT NULL default '0', > KEY `resultId` (`resultId`) > ) TYPE=MyISAM ; > > > EXPLAIN SELECT qb_test_result.id resultId, qb_question.testId AS > testId, qb_test.title testName, qb_question.marks, qb_test.passrate, > qb_test_result.marks testMark, qb_test_result.percentage > testPercentage, qb_test_result.startTime, qb_test_result.endTime, > qb_test_result.status > FROM qb_test_result, qb_test_result_details, qb_test, qb_question > WHERE qb_test_result.id = qb_test_result_details.resultId > AND qb_test_result.testId = qb_test.id > AND qb_test.companyId =1 > AND qb_test.author = '2' > AND qb_test_result_details.questionId = qb_question.id > > > > > > +------------------------+--------+-----------------------+----------+---------+-----------------------------------+------+-------------+ > | table | type | possible_keys | key | > key_len | ref | rows | Extra | > +------------------------+--------+-----------------------+----------+---------+-----------------------------------+------+-------------+ > | qb_test_result | ALL | PRIMARY,testStudent | NULL | > NULL | NULL | 2494 | | > | qb_test_result_details | ref | resultId | resultId | > 4 | qb_test_result.id | 45 | | > | qb_test | eq_ref | PRIMARY,companyAuthor | PRIMARY | > 2 | qb_test_result.testId | 1 | Using where | > | qb_question | eq_ref | PRIMARY | PRIMARY | > 4 | qb_test_result_details.questionId | 1 | | > +------------------------+--------+-----------------------+----------+---------+-----------------------------------+------+-------------+ > > > > Thank you > Sajith A > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] > > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]