我有了这个在它的心脏的实体框架查询:
SELECT 1 AS dummy
FROM [dbo].[WidgetOrder] AS widgets
WHERE widgets.[SomeOtherOrderId] = N'SOME VALUE HERE'
此执行计划选择一个索引是三列的复合物。 这需要10到12秒。
然而,这仅仅是[SomeOtherOrderId]与在“包括”其他一些列的索引。 这是应该使用的索引。 当我运行下面的查询使用它:
SELECT 1 AS dummy
FROM [dbo].[WidgetOrder] AS widgets
WHERE widgets.[SomeOtherOrderId] = CAST(N'SOME VALUE HERE' AS VARCHAR(200))
SELECT 1 AS dummy
FROM [dbo].[WidgetOrder] AS widgets
WHERE widgets.[SomeOtherOrderId] = 'SOME VALUE HERE'
这立即返回。 它使用这仅仅是指数SomeOtherOrderId
所以,我的问题是, 我无法去改变实体框架是如何让查询 。
有什么我可以从这一观点可能会导致正确的索引的索引点做选择?