任何人都可以幫助我優化此查詢嗎?它需要15秒。如果我將WHERE子句移動到連接本身,仍然是相同的結果。需要幫助優化加入
SELECT
`users`.`employeeID` as `username`,
`users`.`firstName` as `fname`,
`users`.`lastName` as `lname`
FROM `enrollment`
INNER JOIN `users` ON `enrollment`.`employeeID` = `users`.`employeeID`
WHERE `enrollment`.`number` = [int]
AND
`enrollment`.`term` = [int]
AND
(
`enrollment`.`status` = 'E'
OR
`enrollment`.`status` = 'M'
)
ORDER BY
`users`.`lastName` ASC,
`users`.`firstName` ASC;
只要注意到,因爲這:
SELECT
`users`.`employeeID` as `username`,
`users`.`firstName` as `fname`,
`users`.`lastName` as `lname`
FROM `enrollment`
INNER JOIN
`users` ON `enrollment`.`employeeID` = `users`.`employeeID`
AND
`enrollment`.`number` = [int]
AND
`enrollment`.`term` = [int]
AND
(
`enrollment`.`status` = 'E'
OR
`enrollment`.`status` = 'M'
)
ORDER BY
`users`.`lastName` ASC,
`users`.`firstName` ASC;
這是EXPLAIN結果
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users ALL PRIMARY NULL NULL NULL 52925 Using filesort
1 SIMPLE enrollment ref employeeID,number_term employeeID 9 ezlrn.users.employeeID 2 Using where
請向我們展示您的'EXPLAIN'。 – Kermit
和你現有的索引。 –
我同意njk。在選擇語句前貼上「EXPLAIN」,運行它併發布結果。 SQL看起來很好(我更喜歡第一個),聽起來你可能需要一些索引。 – Tom