哪个更好:即席查询或存储过程? [英] Which is better: Ad hoc queries or stored procedures?

查看:31
本文介绍了哪个更好:即席查询或存储过程?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设由于某种原因您不能使用 LINQ,将查询放在存储过程中是更好的做法,还是对数据库执行 ad hoc 查询也是一种好做法(比如,为了论证,SQL Server)?

Assuming you can't use LINQ for whatever reason, is it a better practice to place your queries in stored procedures, or is it just as good a practice to execute ad hoc queries against the database (say, SQL Server for argument's sake)?

推荐答案

根据我主要编写 WinForms 客户端/服务器应用程序的经验,这些是我得出的简单结论:

In my experience writing mostly WinForms Client/Server apps these are the simple conclusions I've come to:

使用存储过程:

  1. 适用于任何复杂的数据工作.如果您要执行一些真正需要游标或临时表的操作,通常在 SQL Server 中执行速度最快.
  2. 当您需要锁定对数据的访问时.如果您不向用户(或角色或其他任何人)授予表访问权限,您可以确定与数据交互的唯一方法是通过您创建的 SP.

使用临时查询:

  1. 用于 CRUD,当您不需要限制数据访问(或以其他方式这样做)时.
  2. 用于简单搜索.为一堆搜索条件创建 SP 是一件痛苦且难以维护的事情.如果您可以生成相当快的搜索查询,请使用它.

在我的大多数应用程序中,我同时使用了 SP 和 ad-hoc sql,但我发现我使用 SP 的次数越来越少,因为它们最终成为像 C# 一样的代码,只是更难进行版本控制、测试和维持.除非您能找到不使用的特定理由,否则我建议您使用临时 sql.

In most of my applications I've used both SP's and ad-hoc sql, though I find I'm using SP's less and less as they end up being code just like C#, only harder to version control, test, and maintain. I would recommend using ad-hoc sql unless you can find a specific reason not to.

这篇关于哪个更好:即席查询或存储过程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆