特定の日付範囲で特定のアイテムの lastcost を基本的に検索するクエリがあります。
select first 1 lastcost from stock
where itemid = :itemid and date > :startdate and date < :enddate
order by date desc
">" はインデックスを使用しないため、このクエリは何百万ものレコードで完了するのに数秒かかります。年/月ごとにクエリを分割し、startdate に達するまで反復すると (1 か月あたり 100 万レコードを想定して) 高速になりますか?
while (endate > startdate) do
begin
var_year = extract(year from :endate);
var_month = extract(month from :endate);
select first 1 lastcost from stock
where itemid = :itemid and year=:var_year and month=:var_month
order by date desc
enddate = dateadd (-1 month to enddate);
end
私はこの数日間firebirdにアクセスできないので、自分でこれを試すことができませんでした.
前もって感謝します
よろしく、
レイナルディ