我想從多個表中拉出數據,當我用ORDER BY一個日期時間字段它會在至少10秒後返回結果,但如果我做同樣的查詢沒有ORDER BY那麼它返回2秒以內的結果。ORDER BY datetime使查詢非常緩慢
這是我的當前查詢
SELECT
ph.call_subject AS callSubject,
ac.account_name AS accountName,
DATE_FORMAT(ph.trigger_on, "%c/%e/%Y %h:%i %p") AS triggerOn,
ind.name AS industry,
cc.call_code_name AS callCode
FROM phone_calls AS ph
INNER JOIN accounts AS ac ON ph.account_id = ac.account_id
INNER JOIN industries AS ind ON ind.industry_id = ac.industry_id
INNER JOIN call_codes AS cc ON ph.call_code_id = cc.call_code_id
WHERE ac.status = 1 AND ph.status = 1 AND ph.owner_id = 1 AND ac.do_not_call = 0
AND ph.trigger_on BETWEEN '2012-11-19 00:00:00' AND '2013-03-19 23:59:59'
ORDER BY ph.trigger_on ASC LIMIT 0,1000
下列字段是所有類型INT(11)UNSIGNED
ph.account_id
ac.account_id
ind.industry_id
ac.industry_id
ph.call_code_id
cc.call_code_id
ph.owner_id
以下字段的全部類型TINYINT(1)
ac.status
ph.status
ac.do_not_call
該字段是日期時間類型
ph.trigger_on
請注意,有帳戶300K記錄和phone_calls有500萬條記錄。 我能做些什麼來使ORDER BY更快?請注意,我所有的where子句字段,我所有的ON子句和ph.trigger_on都被編入索引。我使用InnoDB存儲引擎而不是MyIsam。
感謝
請包括表定義,所以我們可以看到您選擇什麼類型和到位 – 2013-03-20 00:06:03
請檢查我的職務索引再次爲我的一些字段類型更新它 – Jaylen 2013-03-20 00:15:19
請你告訴我們解釋什麼回報? – redmoon7777 2013-03-20 04:51:23