sqlserver 多表关联时在where语句中慎用trim()方法

类似如下:

select A.key,B.key,C.key from A,B,C where trim(A.key)=trim(B.fk) and trim(A.col)=trim(C.pk)。

在主表A(200多条记录)关联附表B(4万多条记录)时用了1秒钟时间,该值在不同机器执行可能有所差异,但比不加trim速度稍微慢一些,但是不是特别明显。

其sql语句类似如下:

select A.key,B.key from A,B where trim(A.key)=trim(B.fk)

但是,在上面sql语句中加入第三个表C(两条记录)后,Sql语句如下:

select A.key,B.key,C.key from A,B,C where trim(A.key)=trim(B.fk) and trim(A.col)=trim(C.pk)

整个sql语句执行了差不多70多秒钟。比不加trim()方法多发费了60夺秒。

后来,通过若干实验发现这种where中多表关联条件,如果不在左边关联条件处加trim()方法即可达到基本等同于一般多表关联的效率。

改良后的sql语句如下:

select A.key,B.key,C.key from A,B,C where A.key=trim(B.fk) and A.col=trim(C.pk)

此条sql语句执行效率基本等同于where语句中无trim()的sql语句速度了。

时间: 2009-09-10

解析在MYSQL语法中使用trim函数删除两侧字符

在实际开发中,你总是会遇到这种情况 或者遇到这种情况 数据多了也会令你抓狂,如果还在用select fields from table where like '/%' 绝对是一个吃力不讨好的做法,那么,仔细研究MYSQL自带函数那绝对是首要工作.我第一时间就是想到,PHP函数中的trim是不是也可能用到mysql中呢,回答是肯定的.你可以从MYSQL手册中找到,当然,你可以百度一下,我下面说的与前人相同.SELECT *,trim(LEADING '/' FROM `path`) as path

sqlServer实现去除字符串空格

说起去除字符串首尾空格大家肯定第一个想到trim()函数,不过在sqlserver中是没有这个函数的,却而代之的是ltrim()和rtrim()两个函数.看到名字所有人都 知道做什么用的了,ltrim()去除字符串左边的空格,rtrim()去除字符串右边的空格,要去除首尾空格同时使用这个两个函数就好了. 测试: select ltrim(' test ') --去除左边的空格 select rtrim(' test ') --去除右边的空格 select ltrim(rtrim(' test '

mysql 强大的trim() 函数

mysql中的去除左空格函数: LTRIM(str) Returns the string str with leading space characters removed. 以下是代码片段: 复制代码 代码如下: mysql> SELECT LTRIM(' barbar'); -> 'barbar' This function is multi-byte safe. mysql中的去除右空格函数: RTRIM(str) Returns the string str with trailin

MySQL中的常用函数

在MySQL中,函数不仅可以出现在select语句及其子句中,而且还可以出现在update.delete语句中. 常用的函数有: 1. 字符串函数:主要用于处理字符串. 2. 数值函数:主要用于处理数字. 3. 日期和时间函数:主要用于处理日期和事件. 4. 系统信息函数:获取系统信息. 1. 使用字符串函数: 虽然每种数据库都支持SQL,但是每种数据库拥有各自所支持的函数. 1.1 合并字符串函数concat() 和 concat_ws(): 在MySQL中可以通过函数concat()和con

js trim函数 去空格函数与正则集锦

但是如果项目没有用到jQuery等框架的话,js本身又没有这样的函数,我们不得不自己写这样的函数,下面是函数的具体实现: 复制代码 代码如下: //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return ""; } var whitespace = new String(" \t\n\r"); va

php中的实现trim函数代码

去掉前后的空格. 假设有一个字符串" ddd dd d ",经过Trim()之后成为"ddd dd d". 如上可以去掉两边多余的空格(包括制表符),但不能去掉中间的空格.  PHP中的trim()函数跟ASP中的trim()函数用法一样的,如果你接触过ASP,那么就自然会用的.  用法比较简单,在想要去掉空格的变量中加入如下:  <?php  echo trim($变量);  ?> 一般用到用户的password处理中. 定义和用法 trim() 函数

js编写trim()函数及正则表达式的运用

1.js中本身是没有trim函数的,不过你可以自己写一个 复制代码 代码如下: function trim(str) { var newStr = str.replace(/^\s*$/g,'') retrun newStr; } 2.去除字符串左右两端的空格,在vbscript里面可以轻松地使用 trim.ltrim 或 rtrim,但在js中却没有这3个内置方法,需要手工编写.下面的实现方法是用到了正则表达式,效率不错,并把这三个方法加入String对象的内置方法中去. 写成类的方法格式如下

VBS教程:函数-LTrim、RTrim 和 Trim 函数

LTrim.RTrim 和 Trim 函数返回不带前导空格 (LTrim).后续空格 (RTrim) 或前导与后续空格 (Trim) 的字符串副本. LTrim(string) RTrim(string) Trim(string) string 参数是任意有效的字符串表达式.如果 string 参数中包含 Null,则返回 Null. 说明下面的示例利用 LTrim, RTrim, 和 Trim 函数分别用来除去字符串开始的空格.尾部空格. 开始和尾部空格: Dim MyVarMyVar = L

oracle中的trim函数使用介绍

Oracle TRIM函数是很常见的函数,下面对Oracle TRIM函数的语法作了详尽的阐述说明,希望可以让您对Oracle TRIM函数有更深的认识. 如果提到Oracle TRIM函数,最简单的功能就是使用它来去除字符串的行首和行尾的空格,这个功能也是大家使用频率最高的一种. 然而Oracle TRIM函数其实是具有删除"任意指定"字符的功能,不可谓不牛.我们来一次体验之旅. 1.先看一下Oracle TRIM函数的完整语法描述 TRIM([ { { LEADING | TRAI

mysql中存储过程、函数的一些问题

最近写一些mysql的存储过程和函数,发现网上比较有价值的文档很少,大都是照着手册上抄来的,有些实际问题解决不了,比如用变量作表名. 经过反复调试,总算找到解决办法,一下是一些简单的记录,比较零碎.部分内容转自http://my.opera.com/Dereky/blog/show.dml/322997 1.用变量做表名: 简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sq

PHP使用trim函数去除字符串左右空格及特殊字符实例

本文实例讲述了PHP使用trim函数去除字符串左右空格及特殊字符的方法.分享给大家供大家参考,具体如下: PHP中trim()函数定义如下: trim(string,charlist) 参数说明如下: string 必需.规定要检查的字符串. charlist 可选.规定从字符串中删除哪些字符.如果被省略,则移除以下所有字符: "\0" - NULL "\t" - 制表符 "\n" - 换行 "\x0B" - 垂直制表符 &q

MySQL利用procedure analyse()函数优化表结构

简介 procedure analyse()函数是MySQL内置的对MySQL字段值进行统计分析后给出建议的字段类型. 语法 procesure analyse(max_elements,max_memory) max_elements 指定每列非重复值的最大值,当超过这个值的时候,MySQL不会推荐enum类型. max_memory analyse()为每列找出所有非重复值所采用的最大内存大小. 实战演练 # 对t1表所有的列进行分析 wing@3306>show create table