即席查询和存储过程哪个更好? [关闭]

2024-03-25

假设您出于某种原因无法使用 LINQ,那么将查询放在存储过程中是否是更好的做法,或者执行起来也同样好ad hoc针对数据库的查询(为了论证,例如 SQL Server)?


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

使用存储过程:

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

使用临时查询:

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

在我的大多数应用程序中,我都使用了 SP 和 ad-hoc sql,但我发现我使用 SP 的次数越来越少,因为它们最终变成了像 C# 一样的代码,只是更难进行版本控制、测试和维护。我建议使用 ad-hoc sql,除非您能找到不这样做的具体原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即席查询和存储过程哪个更好? [关闭] 的相关文章

  • 插入后用触发器更新多行(sql server)

    我有一个表 orderDetails 包含订单的产品 产品编号 color size quantity 和一个表库存 产品编号 size color stock 订单完成后 我使用此查询将项目插入表中orderDetails INSERT
  • 是什么阻止“Select top 1 * from TableName with (nolock)”返回结果?

    我目前正在运行以下语句 select into adhoc san savedi from dps san savedi record 这花了很长时间 我想看看它走了多远 所以我运行了这个 select count from adhoc s
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1
  • 表名搜索

    我使用以下命令在特定数据库的存储过程中搜索字符串 USE DBname SELECT Name FROM sys procedures WHERE OBJECT DEFINITION OBJECT ID LIKE xxx 修改上面的内容是否
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • Oracle 中的 SQL 调优 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何文章 链接可以让我找到 SQL 调优 Oracle 的示例 如果能用例子来解释那就太好了 我需
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • SPARK SQL - 当时的情况

    我是 SPARK SQL 的新手 SPARK SQL 中是否有相当于 CASE WHEN CONDITION THEN 0 ELSE 1 END 的内容 select case when 1 1 then 1 else 0 end from
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • SQL Server 用分隔符分割字符串

    我有一个输入字符串 100 2 3 101 2 1 103 2 3 我想解析它并将其添加到具有 3 列的表中 因此它应该是 f x col1 col2 col3 100 2 3 类似的其他数据以逗号分隔作为记录和 作为列 Thanks ni
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样

随机推荐

  • 如何在Python中展平元组

    我有一个列表的以下元素 该列表有 100 个元素长 50 2 7387451803816479e 13 219 如何将每个元素转换为如下所示 50 2 7387451803816479e 13 219 a b c for a b c in
  • 当我更新顶点缓冲区对象时,应该如何更新它使用的顶点数组对象?

    通过 glBufferData 更新 VBO 尤其是其大小 可能会更改其物理内存地址 但不会更改 glGenBuffers 设置的缓冲区对象名称 VBO 通过调用 glVertexAttribPointer 链接到 VAO 其中有关 VBO
  • 在 Atom-shell 中禁用退格键

    我一直在搜索 interwebz 和 Atom shell 文档 试图找出如何禁用back 的功能backspace浏览器窗口中的键 我不想求助于 javascriptonkeydown监听器 有效 而是使用更本机的东西 更多地在应用程序级
  • 将值从文本框传递到控制器

    如何从文本框 电子邮件列表 获取值并将其发送到控制器 我一直在使用webforms 这是我第一次接触mvc View Html TextBox EmailList Html Action SendEmails 控制器 public Acti
  • 是否有用于 jasmine 角度控制器测试的生成器?

    我正在寻找能为角度控制器生成样板茉莉花测试的东西 看来您可以将控制器的依赖项拉出来并将它们放入规范中并节省一些输入 如果我是第一个有这个想法的人 我会感到震惊 但我找不到任何可以做到这一点的东西 除了一个似乎不起作用的自耕农项目 我最近在
  • ViewPager2 notificationItemChanged 的​​ FragmentStateAdapter 未按预期工作

    我正在将 ViewPager2 与 FragmentStateAdapter 一起使用 并且正在调用 notificationItemChanged position 但正如预期的那样 createFragment 方法不会再次调用 这是预
  • TinyMCE客户端验证问题

    我在使用 TinyMCE 编辑器时遇到问题 我的表单带有很少的文本字段和文本区域 tinymce 并启用了客户端验证 当我单击 保存 按钮时 所有文本字段都会进行验证 但需要单击两次才能验证tinymce内容 此外 验证仅在字段为空或条件不
  • 异步 ServiceController.WaitForStatus 如何执行?

    So ServiceController WaitForStatus https msdn microsoft com en us library system serviceprocess servicecontroller waitfo
  • 如何将javascript变量值分配给php变量[重复]

    这个问题在这里已经有答案了 我已经宣布了JavaScript 变量 var myJavascriptVar 12345 并且无法将该值分配给php多变的 myPhpVar myJavascriptVar 我知道 Ajax 可能可以解决我的问
  • 从现有 CXF Rest 服务生成 wadl

    我有使用 CXF 实现的工作 JAX RS 服务 如何生成 wadl 或者有类似球衣的东西吗http path to your restapp application wadl http path to your restapp appli
  • Facebook“无法从 URL 检索数据”

    当尝试对 facebook 进行图形 api 调用时 我收到以下错误 我知道我的回调 url 很好 因为当我在 facebook 调试器中测试它时 它可以很好地查看页面 我也在使用 Google App Engine 我真的认为这个错误可能
  • C++ 匿名变量

    为什么这不起作用 0 define CONCAT x y x y 1 2 define VAR LINE x 3 int CONCAT anonymous LINE x 4 5 define VAR LINE2 x 6 int anonym
  • 如何向图表添加适当的噪声

    我有一个 matlab 图表 类似轨迹的东西 我想向图表添加噪音 我尝试添加正态分布噪声 使用兰特 例如 x1 x a rand size x 对于 y 也是如此 结果附在下面 这不是我想要的 这给了我一个散点图 或者完全嘈杂的图 如下图所
  • 2D RPG 中的 XML、YAML 和 JSON [重复]

    这个问题在这里已经有答案了 我不知道对于 C 2D RPG 是否使用 XML YAML 或 JSON 这是我的想法 我需要一些简单的东西 不仅可以保存玩家数据 还可以保存环境数据 例如对象 x y 坐标 加载时间 日期 图形配置等 我需要一
  • 为什么 setLastModified(time) 对此文件不起作用?

    为什么下面代码中的文件日期没有改变 fLocal location C 中的现有文件 fLocal date 以长整型设置的日期 boolean x new File fLocal location setLastModified Long
  • 在 Ubuntu 中从 CSV 复制到 Postgres

    我的问题与此类似one https stackoverflow com q 14083311 1777654但在 Linux Mint 15 Ubuntu 中 我已经尝试过标准COPY http www postgresql org doc
  • Laravel:字符串数据,右截断:1406 数据对于列来说太长

    我有一张桌子 上面有一列 酒店 该项目是在 Laravel 5 4 中创建的 因此我使用了 Migrations table gt string hotel 50 这是 MYSQL VARCHAR 50 它运作良好 因为当我开发时 我使用了
  • Android 操作系统认为应用程序在调试期间处于断点时没有响应

    我不确定这是否是 Android studio 2 0 的问题 还是因为我正在开发的这个新应用程序中存在一些奇怪的项目设置 当我在调试期间停在断点处时 操作系统会向我显示一个对话框 指出应用程序没有响应 并让我选择等待或终止应用程序 然后过
  • 安全方法为无安全性,但不允许页面提取和文档组装

    我有一个非常奇怪的问题 我不确定问题出在哪里 我正在创建 PDF 但未设置任何安全限制或密码 当我在 Adob e Reader DC 中打开 PDF 并获取属性时 它确实将安全方法显示为 无安全 但是 文档组装和页面提取设置为不允许 PD
  • 即席查询和存储过程哪个更好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi