【发布时间】:2019-04-17 21:59:25
【问题描述】:
我有以下功能:
DELIMITER $$
DROP FUNCTION IF EXISTS f_prevpricedate;
CREATE FUNCTION f_prevpricedate (id CHAR(8), startdate DATE)
RETURNS DATE
BEGIN
DECLARE prevpricedate DATE;
SELECT MAX(f.p_date) INTO prevpricedate
FROM fp_v2_fp_basic_prices AS f
WHERE f.fsym_id = id AND f.p_date<startdate;
RETURN prevpricedate;
END$$
这基本上只是返回最接近输入日期的日期(前一个日期)。但它运行得非常慢,因为表非常大。
有人知道如何优化吗?
【问题讨论】:
-
fp_v2_fp_basic_prices.p_date是否已编入索引?explain select ...说什么? -
@Schwern 我不确定在这种情况下索引是什么意思。我 2 天前开始使用 SQL。
-
索引对于高效的 SQL 非常重要。您的代码在第 2 天令人印象深刻。
-
@Schwern 谢谢。我仍然觉得我很难真正理解这些起伏,但我觉得你的评论令人鼓舞!
标签: mysql