TRIM RTRIM LTRIM性能

时间:2010-11-10 06:22:16

标签: string performance oracle trim

我只需要在查询的某些部分执行RTRIM()但如果我执行TRIM()会影响性能。

Trim() 更慢/更快/完全相同(甚至没有可忽略不计的差异) 与RTRIM() AND LTRIM()相比?

这仅适用于Oracle 10g。

但是在SQL Server 2005的情况下, 我们有函数/方法'x()',它可以将RTRIM(LTRIM(' blah.. blah.. '))替换为单个函数吗?

我只是想使用“单一”功能来执行RTRIM()LTRIM()所做的相同功能。

4 个答案:

答案 0 :(得分:7)

基于这个粗略测试,存在一些小差异:

DECLARE
n PLS_INTEGER := DBMS_UTILITY.get_time;
s1 VARCHAR2(32767);
s2 VARCHAR2(32767);
BEGIN
s1 := LPAD('X',15000,' ') || RPAD('X',15000,' ');
FOR i IN 1..1000000 LOOP
  NULL;
END LOOP;
DBMS_OUTPUT.put_line('Baseline: ' || (DBMS_UTILITY.get_time - n));
n := DBMS_UTILITY.get_time;
FOR i IN 1..1000000 LOOP
  s2 := LTRIM(s1);
END LOOP;
DBMS_OUTPUT.put_line('LTRIM: ' || (DBMS_UTILITY.get_time - n));
n := DBMS_UTILITY.get_time;
FOR i IN 1..1000000 LOOP
  s2 := RTRIM(s1);
END LOOP;
DBMS_OUTPUT.put_line('RTRIM: ' || (DBMS_UTILITY.get_time - n));
n := DBMS_UTILITY.get_time;
FOR i IN 1..1000000 LOOP
  s2 := TRIM(s1);
END LOOP;
DBMS_OUTPUT.put_line('TRIM: ' || (DBMS_UTILITY.get_time - n));
END;

在最坏的情况下,差异达到0.000128百分之一秒:

Baseline: 0
LTRIM: 113
RTRIM: 103
TRIM: 8
Baseline: 0
LTRIM: 136
RTRIM: 133
TRIM: 8

答案 1 :(得分:3)

性能上的差异通常是不可检测的,特别是如果它在一个从表中获取数据的查询中。选择符合您要求的任何一种。

答案 2 :(得分:2)

这个问题与SQL Server无关,因为它实现了LTRIMRTRIM而不是TRIM

请参阅SQL 2005 string functions列表。

答案 3 :(得分:0)

我从来没有在SQL Server中看到过像Trims这样的基准测试。我经常使用它,并且在处理大量数据时会发现一些小的性能......性能很小。