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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对lIKE语句的优化

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对lIKE语句的优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

實驗步驟如下:

首先構造一張百萬行的表。

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

如上所示,構造完成

接下來連續運用多個LIKE查詢來模糊匹配

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查詢一次,就走一次全表掃描,效率非常慢

同樣的效果,現在來換做INSTR函數來執行

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

看到了吧,,時間上的差異很明顯,INSTR在一瞬間執行完成,因為這個是查找的字段,而非走全表掃描

看來,oracle 內部函數效率還是高些。

?

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

注意:

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

???????? 等價于

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

?

注:比較mysql中locate函數

轉載于:https://www.cnblogs.com/prvin/archive/2012/09/28/2706760.html

總結

以上是生活随笔為你收集整理的对lIKE语句的优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。