asc速度慢 mysql_mysql – ORDER BY datetime使查询非常慢

我试图从多个表中提取数据,当我使用ORDER BY datetime字段时,它会在至少10秒后返回结果,但如果我在没有ORDER BY的情况下执行相同的查询,则返回结果不到2秒.

这是我目前的查询

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.

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值