日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

对lIKE语句的优化

發(fā)布時(shí)間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对lIKE语句的优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在大表中,進(jìn)行模糊查詢,一般情況下是用LIKE'%%',但是這個(gè)東西走的是全表掃描,如果在數(shù)據(jù)量非常大的情況下,效率特別慢,因此,嘗試用ORACLE函數(shù)INSTR()來(lái)解決。

實(shí)驗(yàn)步驟如下:

首先構(gòu)造一張百萬(wàn)行的表。

SQL> insert into emp2 select * from emp2;
1032192 rows inserted

如上所示,構(gòu)造完成

接下來(lái)連續(xù)運(yùn)用多個(gè)LIKE查詢來(lái)模糊匹配

SQL> select * from emp2 where job like '%RE%' and ename like '%A%' and mgr like '%3%';
EMPNO ENAME????? JOB???????? MGR HIREDATE????????? SAL????? COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------
Executed in 1.859 seconds

如上所示,LIKE查詢一次,就走一次全表掃描,效率非常慢

同樣的效果,現(xiàn)在來(lái)?yè)Q做INSTR函數(shù)來(lái)執(zhí)行

SQL> select * from emp where instr(job,'RE')>0 and instr(ename,'A')>0 and instr(mgr,'3')>0;
EMPNO ENAME????? JOB???????? MGR HIREDATE????????? SAL????? COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------
Executed in 0.063 seconds

看到了吧,,時(shí)間上的差異很明顯,INSTR在一瞬間執(zhí)行完成,因?yàn)檫@個(gè)是查找的字段,而非走全表掃描

看來(lái),oracle 內(nèi)部函數(shù)效率還是高些。

?

因此,大家以后碰到同樣的問(wèn)題,除了全文檢索外,這個(gè)也是個(gè)好方式

注意:

??? select?? id, name from users where instr(id, '101') > 0;?

???????? 等價(jià)于

????????? select?? id, name from users where id like '%101%'

?

注:比較mysql中l(wèi)ocate函數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/prvin/archive/2012/09/28/2706760.html

總結(jié)

以上是生活随笔為你收集整理的对lIKE语句的优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。