我们目前正在调查对我们的 SQL 服务器的负载,并寻找减轻它的方法。在我接受高等教育期间,我总是被告知,从性能的角度来看,让 SQL Server 来完成这项工作的成本更低。但这是真的吗?
下面是一个例子:
SELECT ord_no FROM oelinhst_sql
这将在 14 秒内返回 783119 条记录。该字段是
char(8)
,但我们所有的订单号都是六位数字,因此每个订单号前都有两个空白字符。我们通常会修剪此字段,因此我进行了以下测试:SELECT LTRIM(ord_no) FROM oelinhst_sql
这在 13 秒内返回了 783119 条记录。我还尝试了另一项测试:
SELECT LTRIM(RTRIM(ord_no)) FROM oelinhst_sql
右边没有什么可修剪的,但我试图看看仅仅调用函数的行为是否有任何开销,但它仍然在 13 秒后返回。
我的经理正在谈论将诸如字符串修剪之类的内容从 SQL 中移到源代码中,但测试结果表明并非如此。我的经理还说他在某处听说过使用 SQL 函数意味着不会使用索引。这也有道理吗?
最佳答案
仅优化已证明是系统中最慢部分的代码。到目前为止,您的数据表明 SQL 字符串操作函数根本不影响性能。将此数据交给您的经理。
如果在 WHERE 子句中使用函数或类型转换,通常会阻止 SQL 服务器使用索引。这不适用于使用函数转换返回的列。
关于sql - SQL 函数与代码函数的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6391186/