我有這些表結構,雖然它的工作,使用某些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