Thank you Mathias once again
> I suggest you to test after optimize table ... and analyze table ...
> if you stay with the problem and you can give me a set of data, i'll try to
> help
> more.
Initially while posting... i tried to reduce one table to avoid
complexity from the actual query. I'm listing the tables below. I'm
also attaching some sample data.
-------------------------------------------------------------------------------------------------------------------------------------
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 `testId` (`testId`),
KEY `testStudent` (`id`,`testId`,`studentId`)
) 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;
CREATE TABLE `ums_user` (
`id` bigint(255) NOT NULL auto_increment,
`firstName` varchar(255) NOT NULL default '',
`lastName` varchar(255) NOT NULL default '',
`userName` varchar(50) NOT NULL default '',
`password` varchar(50) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`companyId` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `userName` (`userName`),
KEY `roleId` (`id`)
) TYPE=MyISAM ;
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;
-------------------------------------------------------------------------------------------------------------------------------------
Now the below query is not using the index "testStudent" in qb_test_result.
-------------------------------------------------------------------------------------------------------------------------------------
EXPLAIN
SELECT ums_user.firstName, qb_test.title testName, SUM(
qb_question.marks ) maxMarks, qb_test_result.percentage
FROM qb_test_result, qb_test_result_details, qb_test, qb_question,
ums_user
WHERE qb_test_result.id = qb_test_result_details.resultId
AND qb_test_result.testId = qb_test.id
AND qb_test_result.studentId = ums_user.id
AND qb_test.id = qb_question.testId
AND qb_question.id = qb_test_result_details.questionId
AND qb_test.companyId =1
AND qb_test.author = 2
GROUP BY qb_test_result.id
-------------------------------------------------------------------------------------------------------------------------------------
How ever when i removed qb_test_result.percentage...it does..
-------------------------------------------------------------------------------------------------------------------------------------
EXPLAIN
SELECT ums_user.firstName, qb_test.title testName, SUM(
qb_question.marks ) maxMarks
FROM qb_test_result, qb_test_result_details, qb_test, qb_question,
ums_user
WHERE qb_test_result.id = qb_test_result_details.resultId
AND qb_test_result.testId = qb_test.id
AND qb_test_result.studentId = ums_user.id
AND qb_test.id = qb_question.testId
AND qb_question.id = qb_test_result_details.questionId
AND qb_test.companyId =1
AND qb_test.author = 2
GROUP BY qb_test_result.id
-------------------------------------------------------------------------------------------------------------------------------------
Am i doing something wrong in the first query
Thank you once again
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]