私はテーブルを持っています
CREATE TABLE `symbol_details` (
`symbol_header_id` int(11) DEFAULT NULL,
`DATE` datetime DEFAULT NULL,
`ADJ_NAV` double DEFAULT NULL
)
〜20,000,000エントリ。ここで、1つの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)
内部の「日付の選択」クエリを実行すると、すぐに返されます。サブクエリの代わりに正しい日付を入力して外部クエリを実行するだけでも、非常に迅速に終了します。しかし、私がすべてを実行すると、それは永遠にかかります-何かが間違っていますか?