我有这些表结构,虽然它的工作,使用某些SQL查询EXPLAIN给'使用临时;在其中一个表上使用“filesort”。一旦表填充了数千个数据,这可能会妨碍性能。以下是该系统的表格结构和解释。优化MySQL表结构。需要建议
CREATE TABLE IF NOT EXISTS `jobapp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fullname` varchar(50) NOT NULL,
`icno` varchar(14) NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1',
`timestamp` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `icno` (`icno`)
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `jobapplied` (
`appid` int(11) NOT NULL,
`jid` int(11) NOT NULL,
`jobstatus` tinyint(1) NOT NULL,
`timestamp` int(10) NOT NULL,
KEY `jid` (`jid`),
KEY `appid` (`appid`)
) ENGINE=MyISAM;
查询我想这给上述声明:
EXPLAIN SELECT japp.id, japp.fullname, japp.icno, japp.status, japped.jid, japped.jobstatus
FROM jobapp AS japp
INNER JOIN jobapplied AS japped ON japp.id = japped.appid
WHERE japped.jid = '85'
AND japped.jobstatus = '2'
AND japp.status = '2'
ORDER BY japp.`timestamp` DESC
该系统是招募新员工。一旦注册开放,数百名申请人将在一次注册。他们被允许选择5个不同的工作。稍后在注册会话结束时,管理员将逐个完成每项工作。我用一张表(jobapplied)来存储2个项目(申请人ID,工作ID)来记录谁应用了什么。这是导致上述说法的表格。我意识到这张表没有PRIMARY键,但我以后无法找出任何其他方式让管理员专门搜索已申请的工作。
有关如何优化表格的任何建议?
为什么应用程序没有PRIMARY KEY? – 2010-10-29 07:24:31
您能向我们展示EXPLAIN语句的结果吗?此外,请尽量避免使用字符串“2”,“85”的整数值所期望的类型转换。 – Vadim 2010-10-29 07:34:32
下面是解释 - http://img180.imageshack.us/img180/5930/explain.jpg – exentric 2010-10-29 08:34:04