類(lèi)似如下:
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多條記錄)關(guān)聯(lián)附表B(4萬(wàn)多條記錄)時(shí)用了1秒鐘時(shí)間,該值在不同機(jī)器執(zhí)行可能有所差異,但比不加trim速度稍微慢一些,但是不是特別明顯。
其sql語(yǔ)句類(lèi)似如下:
select A.key,B.key from A,B where trim(A.key)=trim(B.fk)
但是,在上面sql語(yǔ)句中加入第三個(gè)表C(兩條記錄)后,Sql語(yǔ)句如下:
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)
整個(gè)sql語(yǔ)句執(zhí)行了差不多70多秒鐘。比不加trim()方法多發(fā)費(fèi)了60奪秒。
后來(lái),通過(guò)若干實(shí)驗(yàn)發(fā)現(xiàn)這種where中多表關(guān)聯(lián)條件,如果不在左邊關(guān)聯(lián)條件處加trim()方法即可達(dá)到基本等同于一般多表關(guān)聯(lián)的效率。
改良后的sql語(yǔ)句如下:
select A.key,B.key,C.key from A,B,C where A.key=trim(B.fk) and A.col=trim(C.pk)
此條sql語(yǔ)句執(zhí)行效率基本等同于where語(yǔ)句中無(wú)trim()的sql語(yǔ)句速度了。