sqlserver 多表關聯(lián)時在where語句中慎用trim()方法
發(fā)布日期:2022-01-31 13:36 | 文章來源:站長之家
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多條記錄)關聯(lián)附表B(4萬多條記錄)時用了1秒鐘時間,該值在不同機器執(zhí)行可能有所差異,但比不加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語句執(zhí)行了差不多70多秒鐘。比不加trim()方法多發(fā)費了60奪秒。
后來,通過若干實驗發(fā)現(xiàn)這種where中多表關聯(lián)條件,如果不在左邊關聯(lián)條件處加trim()方法即可達到基本等同于一般多表關聯(lián)的效率。
改良后的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語句執(zhí)行效率基本等同于where語句中無trim()的sql語句速度了。
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
相關文章
上一篇: