当前位置: 首页 > 面试题库 >

是否将使用Function来简化SQL查询的大量imapact性能?

谭翔
2023-03-14
问题内容

我有一个查询,该查询使用一组复杂的CASE语句,有些嵌套,有些带有CASE语句的COALESCE,这很难管理。

相同的基本逻辑适用于SELECT中的约12列,并且可以模块化并放置在函数中-好处包括一致性和易于原型设计。

将逻辑放入函数中会严重阻碍性能吗? 功能本质上是否较慢?

SELECT从5个表中拉出,每个表大约100,000行,因此性能非常重要。

SQL Server 2005


问题答案:

通常, 选择 标量函数的结果不会有多大伤害,但是通过它进行 过滤 可能很容易花费数百秒(虽然不一定)。

如果您需要按标量函数结果(WHERE col = dbo.scalar_function())进行过滤,通常可以帮助制作内联表值函数。它将返回其值作为结果表的唯一行。然后inner join,您将对函数结果进行处理,并根据返回值进行有效过滤。之所以可行,是因为SQL Server始终能够展开内联表值函数并将它们内联到调用查询中。

请注意,如果函数是一个多步骤操作,则此技巧将无效。这些不能解开。



 类似资料:
  • 问题内容: 我不太擅长SQL,因此我要求你们提供有关编写查询的帮助。 [SQL查询-表连接问题]https://codingdict.com/questions/208252) 我得到了答案,并且可以正常工作!它只是明显的缓慢。我讨厌这样做,但是我真的希望有人在那里推荐一些优化查询的方法。我什至没有自己尝试过,因为我对SQL不够了解,甚至无法开始使用谷歌搜索。 问题答案: 可能有帮助的是在要加入的

  • 问题内容: 我正在尝试从C#查询SQL Server数据库 我有课 我的查询中有问题。 当我给普通查询“从表中选择*”时,这给了我完美的结果。 但是当我尝试给出条件时,它给了我错误。有什么建议可以解决吗?谢谢。 问题答案: 钿狅笍 警告 此答案包含一个SQL注入安全漏洞。不要使用它。如该问题的其他一些答案所述(例如,Tony Hopkinson的答案),请考虑使用参数化查询。 尝试在where子句

  • 问题内容: 我的应用程序具有一组固定的SQL查询。这些查询以轮询模式运行,每10秒运行一次。 由于数据库的大小(> 100 GB)和设计(优步进行了标准化),我遇到了性能问题。 每当更改查询结果的数据库上发生CRUD事件时,是否可以对给定查询进行增量更改?例如,如果我查询姓氏为FOO的所有员工,那么我希望每当a)姓氏为FOO的新员工加入b)姓氏为FOO的雇员被解雇等时收到通知。 我正在运行SQL

  • 我正在使用jaydebeapi(Mac OS X)查询Netezza数据库,并执行一些快速/肮脏的计时: 完成大约需要10分钟(平均超过10次)。 现在,当我使用WinSQL(Windows7,ODBC)运行相同的SQL查询时,返回数据大约需要3分钟。我似乎不明白为什么在Python中要花这么长的时间,也不确定如何或从哪里开始寻找。

  • 问题内容: 我在繁忙的数据库上有一个存储过程,该数据库在某种程度上一直在昂贵的查询列表中排在首位。该查询非常简单,它采用单个参数(@ ID,int)作为表的主键,并选择与该ID匹配的记录。主键是带有聚簇索引的身份字段,所以我很困惑如何进一步优化它? 查询如下 不确定发布执行计划的最佳方法-显示的全部内容是聚集索引扫描占用了100%的操作 问题答案: 我认为通过使用您,您将获得次优的计划。将其分为2

  • 问题内容: 我想将n维特征向量与每个文档一起存储,然后提供另一个特征向量作为查询,其结果按余弦相似度排序。Elastic Search可以做到吗? 问题答案: 我没有特定于Elastic Search的答案,因为我从未使用过它(我使用构建了elasticsearch的Lucene)。但是,我正在尝试为您的问题提供一个通用的答案。给定查询向量,有两种获取最近向量的标准方法,如下所述。 Kd树 第一种