C# Linq与SQL以及存储过程在性能方面的比较
我使用的是SQL Server 2005数据库,我的应用程序是ASP.NET MVC4。 应用程序的业务逻辑有点复杂,包含多个表联接和搜索条件。在极端情况下,我需要连接大约10个表来获取单个网格所需的数据。C# Linq与SQL以及存储过程在性能方面的比较,c#,asp.net,sql-server,linq,C#,Asp.net,Sql Server,Linq,我使用的是SQL Server 2005数据库,我的应用程序是ASP.NET MVC4。 应用程序的业务逻辑有点复杂,包含多个表联接和搜索条件。在极端情况下,我需要连接大约10个表来获取单个网格所需的数据。 我想知道是否应该使用SPs或Linq to SQL应用程序代码来最大化我的应用程序性能。您通常会发现存储过程的性能更快,因为存储过程将在可能的情况下重复使用执行计划。Linq查询本质上是针对数据库的特殊查询,没有缓存的数据库每次都作为新请求处理。存储过程的性能通常会更快,因为存储过程将在可能
我想知道是否应该使用SPs或Linq to SQL应用程序代码来最大化我的应用程序性能。您通常会发现存储过程的性能更快,因为存储过程将在可能的情况下重复使用执行计划。Linq查询本质上是针对数据库的特殊查询,没有缓存的数据库每次都作为新请求处理。存储过程的性能通常会更快,因为存储过程将在可能的情况下重复使用执行计划。Linq查询本质上是针对数据库的特殊查询,没有缓存的数据库每次都作为新请求处理。存储过程的性能通常会更快,因为存储过程将在可能的情况下重复使用执行计划。Linq查询本质上是针对数据库的特殊查询,没有缓存的数据库每次都作为新请求处理。存储过程的性能通常会更快,因为存储过程将在可能的情况下重复使用执行计划。Linq查询本质上变成了针对数据库的特殊查询,没有缓存的数据库每次都作为新请求处理。SQL Server基本上通过以下步骤执行任何查询(存储过程调用或特殊SQL语句):
- 由于每个非参数化查询对SQL Server来说都是一个新的、不同的查询,因此它必须为每个查询完成确定执行计划的所有步骤(这样既浪费了时间,也浪费了计划缓存空间,因为将执行计划存储到计划缓存中最终并没有真正的帮助,因为该特定查询可能不会再次执行)
- 非参数化查询有遭受SQL注入攻击的风险,应该不惜一切代价避免
- 由于每个非参数化查询对SQL Server来说都是一个新的、不同的查询,因此它必须为每个查询完成确定执行计划的所有步骤(这样既浪费了时间,也浪费了计划缓存空间,因为将执行计划存储到计划缓存中最终并没有真正的帮助,因为该特定查询可能不会再次执行)
- 非参数化查询有遭受SQL注入攻击的风险,应该不惜一切代价避免