按主键值数组搜索

时间:2016-01-02 11:39:27

标签: sql sql-server entity-framework tsql

我有一个可能有1000个对象的数组,其中包含一个名为ItemId的属性。 ItemId引用表主键。

如何通过主键选择1000行获得最佳性能?什么是最佳做法?

  • 在C#循环中循环1000次,即1000次没有往返数据库?
  • 一个包含1000个项目的列表的SQL?
  • 使用EF并将对象数组与表格连接。

有更好的想法吗?

1 个答案:

答案 0 :(得分:0)

通常通过限制查询次数来达到最佳性能。但是,使用WHERE ... IN也可能很慢,因为IN子句中的子查询将针对您循环的每一行执行。这取决于您的数据库引擎。

您可以(并且应该始终)通过尝试所有三种方法来测试性能。只有当您比较特定系统的性能时,您才会真正了解。要了解效果原因,您可以在查询前使用EXPLAIN,以查看发生的情况。

在您的特定情况下,您可能会发现(使用性能测试)添加包含阵列的临时表然后加入可能具有最佳的低级别性能。使用实体框架应具有可比性,但这取决于实施。