我有一张桌子
CREATE TABLE `symbol_details` (
`symbol_header_id` int(11) DEFAULT NULL,
`DATE` datetime DEFAULT NULL,
`ADJ_NAV` double DEFAULT NULL
)
有约 20,000,000 个条目。现在我想为一个 symbol_header_id 找到最接近季度末的 ADJ_NAV 值:
SET @quarterend = '2009-3-31';
SELECT symbol_header_id AS she, ADJ_NAV AS aend FROM symbol_details
WHERE
symbol_header_id = 18546
AND DATE= (
# date closest after quarter end
SELECT DATE FROM symbol_details
WHERE ABS(DATEDIFF(DATE, @quarterend)) < 10
AND DATE<=@quarterend
AND symbol_header_id = 18546
ORDER BY ABS(DATEDIFF(DATE, @quarterend)) ASC LIMIT 1)
当我运行内部“选择日期”查询时,它会快速返回。只需运行带有正确日期而不是子查询的外部查询也可以很快完成。但是当我运行整个过程时,它需要永远 - 有什么问题吗?