存储过程和实体框架插入查询 - 性能

时间:2014-06-08 10:59:06

标签: c# sql linq entity-framework

我有一个简单的Insert语句,但我插入数据的表有数百万行。问题是这个Insert语句每2到3秒执行一次。

由于此插入语句,我的CPU使用率有时达到80%以上。

我需要问一下,如果我为这个插入编写一个存储过程,它会提高我的性能吗?

1 个答案:

答案 0 :(得分:1)

存储过程存储在SQL中,因此可以提高性能,因为SQL知道它具有哪些过程,然后可以优化执行。此外,实体框架提供了一些围绕数据库功能的包装器。这意味着它有点笨重,因为所有的类和方法/属性。尝试一下,它可以带来改进。

那就是说,我认为你的问题不是因为EF与存储程序的困境。这可能是由于表中有数百万条记录。当您执行INSERT时,数据库会检查各种事物,例如外键,约束,触发器被触发等。其他可能影响性能并且与数据库相关的事情,例如事务的大小记录等。

我会尝试两件事:

  1. 我会创建一个相同的表,其中包含相同的触发器,索引,主键,外键......除非我将其留空。然后,当你执行INSERT时,我会尝试当前的应用程序仍然需要。如果它运行得很快,那么它可能与数据库有关。

  2. 如果上一点不起作用,我会假设,代码有问题,所以我会创建一个存储过程并再次尝试。如果它可以正常工作,那么我会更改我的代码以使用存储过程并向DB管理员咨询您的具体情况。