sql - SQL 函数与代码函数的性能

标签 sql performance string

我们目前正在调查对我们的 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/

相关文章:

MYSQL查询创建字段Y o N based with join two tables

java - 如何为内存中处理建模数据

ruby-on-rails - Rails : Titlecase Only Capitalizes First Word in f. 标签

java - 如何使用字符串替换方法而不替换为空字符串?

javascript - Jquery 字符串中某些字符的问题

MySQL 不处理 ENUM 类型错误

sql - 使用 SELECT...WHERE id IN (...),按 IN() 排序结果?

mysql - SQL查询仅返回重复项的最大值[duplicate]

c# - HTTP 请求的多个小文件与一个大文件

c# - 在 C# 中使用内存映射文件时是否可以避免数据副本?