私は実行に約1分かかる次のクエリがあります。Sql Select Query Performance
public static Func<Entities, string, IQueryable<string>> compiledInvoiceQuery =
CompiledQuery.Compile((Entities ctx, string orderNumb) =>
(from order in ctx.SOP10100
where order.ORIGNUMB == orderNumb
select order.SOPNUMBE).Union(
from order in ctx.SOP30200
where order.ORIGNUMB == orderNumb
select order.SOPNUMBE)
);
私の主キーではないORIGNUMBに基づいてフィルタリングします。インデックスを置くことさえできません。それをもっと速くするための他の方法はありますか?私は、SQLサーバー上でテストされ、唯一のクエリ
from order in ctx.SOP10100
where order.ORIGNUMB == orderNumb
select order.SOPNUMBE
または
select SOPNUMBE
from SOP10100
where ORIGNUMB = @orderNumb
以上55秒を取っていることがわかりました。提案してください。
選択条件の中で唯一の要素である「ORIGIN」があるため、パフォーマンスを向上させるために、その特定の列を索引付けする方法はありません。 – dasblinkenlight
インデックスを作成できない場合は、クエリを書き換えて選択性の高いものにすることができます(索引なしの場合はほとんどありません)。 –
なぜそれをインデックスできませんか? – HLGEM