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]

Reply via email to