gpt4 book ai didi

mysql - MySql 中的存储过程性能

转载 作者:行者123 更新时间:2023-11-29 22:53:37 25 4
gpt4 key购买 nike

我在数据库中使用了一个 SP,我在上一个问题 Date Intervals 中重复使用了该 SP查询开始日期和结束日期并返回两个日期之间的所有日期,然后我将其连接到我的订单表。

由于某种原因,使用 SP 的查询需要超过 40 秒,而没有使用 SP 的查询需要不到 3 秒。

我在这里做了一些研究,这个答案表明字符集可能与此有关。 SP Performance

排序规则连接和数据库排序规则状态分别为 utf8_general_ci 和 latin1_swedish_ci,表的表排序规则为 latin1_swedish_ci。

这是我的sql

call make_intervals('2014-01-29 00:00:00','2015-03-03 00:00:00',1,'DAY');

SELECT
interval_start,
SUM(TenderedAmt) total
FROM time_intervals ti
LEFT JOIN tblorderheaders o
ON o.OrderDate = ti.interval_start AND ( ClientId=35 or ClientId IS NULL ) GROUP BY DATE(ti.interval_start) ORDER BY ti.interval_start ASC;

如果我执行以下查询,则无需 JOIN 到过程生成的表,它就会在 0.2 秒内完成。

SELECT SUM(TenderedAmt) total FROM tblorderheaders WHERE ClientId=35 AND (OrderDate>='2014-01-29' AND OrderDate<='2015-02-27') GROUP BY DATE(OrderDate)

谁能告诉我为什么这个查询需要这么长时间吗?

提前致谢。

最佳答案

终于找到问题了!问题是 o.OrderDate 设置为 VARCHAR 类型。通过将其更改为时间戳,极大地提高了查询速度。

关于mysql - MySql 中的存储过程性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802912/

25 4 0
文章推荐: mysql - SQL : Selecting the time range between two column
文章推荐: javascript - 通过 ajax 在模态中从