首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql查询很慢,有什么建议如何优化吗?

mysql查询很慢,有什么建议如何优化吗?
EN

Stack Overflow用户
提问于 2014-11-11 20:01:30
回答 4查看 1.1K关注 0票数 0

最近,我通过Go爹地转到了一个专门的Windows主机Plex CPanel上。我已经建立了我的网站和数据库(MySQL)

最近,我注意到我的数据库查询花费的时间比预期的要长得多。

我的桌子:

下面是一个示例:

代码语言:javascript
复制
SELECT a.snapshot_id, a.brand_id, b.brand_id 
FROM snapshots a 
    INNER JOIN brands b 
               ON a.brand_id = b.brand_id 
WHERE DATE(a.date_sent) = '2014/11/10'

使用PhpMyAdmin,运行以下查询:

显示行0- 247 (248个总计,查询耗时30.1080秒)。

这是一个很长的时间,当这是执行在网站的主页。

对我如何优化这个问题有什么建议吗?还是服务器真的很慢?

快照表有超过45K行。

解释输出:

疯狂的发现!当比较同一数据库和表的共享宿主和专用宿主之间的行和大小时。

共享:1 023 459条记录@ 1.8GiB专用:43 916条记录@4.5

为什么会有差异?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-16 02:40:19

谢谢大家..。似乎性能问题不是查询..。我已经根据上面的建议优化了查询,并且没有看到太多的改进。

从那以后,我搬到了另一个托管服务,并注意到了一个巨大的进步。

票数 1
EN

Stack Overflow用户

发布于 2014-11-11 22:30:55

您正在将函数date()应用于每一行,这是非常昂贵的。

相反,以不需要任何转换函数的方式进行比较,如下所示:

代码语言:javascript
复制
WHERE a.date_sent between '2014/11/10 00:00:00' and '2014/11/10 23:59:59'

并确保在该列上定义了索引,并在联接表的外键列上定义了索引。

票数 1
EN

Stack Overflow用户

发布于 2014-11-11 20:37:23

查询的问题是,数据库优化器很难应用其优化策略(例如索引),因为DATE()函数是查询where部分的一部分。然而,一个好的数据库引擎可能能够提供一个速度,如果查询是完全不变的重复。

除了将日期和时间分别保存到不同的数据库列(这可能是更好的方法)的一般设计建议之外,在这个答案https://stackoverflow.com/a/95256/3911010中还提出了如何避免查询中对日期的低效使用的想法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26873458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档