我只需要在查询的某些部分执行RTRIM()
但如果我执行TRIM()会影响性能。
是Trim()
更慢/更快/完全相同(甚至没有可忽略不计的差异)
与RTRIM()
AND LTRIM()
相比?
这仅适用于Oracle 10g。
但是在SQL Server 2005的情况下,
我们有函数/方法'x()',它可以将RTRIM(LTRIM(' blah.. blah.. '))
替换为单个函数吗?
我只是想使用“单一”功能来执行RTRIM()
和LTRIM()
所做的相同功能。
答案 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无关,因为它实现了LTRIM
和RTRIM
而不是TRIM
。
答案 3 :(得分:0)
我从来没有在SQL Server中看到过像Trims这样的基准测试。我经常使用它,并且在处理大量数据时会发现一些小的性能......性能很小。