oracle怎樣會(huì)讓索引失效
Jan 26, 2022 am 10:25 AMoracle索引失效的原因:1、沒(méi)有使用WHERE子句;2、使用“IS NULL”和“IS NOT NULL”;3、在WHERE子句中使用函數(shù);4、使用LIKE進(jìn)行模糊查詢;5、在WHERE子句中使用不等于操作;6、比較不匹配數(shù)據(jù)類型等。
本教程操作環(huán)境:Windows10系統(tǒng)、Oracle 11g版、Dell G3電腦。
oracle怎樣會(huì)讓索引失效
Oracle 索引的目標(biāo)是避免全表掃描,提高查詢效率,但有些時(shí)候卻適得其反。
例如一張表中有上百萬(wàn)條數(shù)據(jù),對(duì)某個(gè)字段加了索引,但是查詢時(shí)性能并沒(méi)有什么提高,這可能是 oracle 索引失效造成的。oracle 索引有一些限制條件,如果你違反了這些索引限制條件,那么即使你已經(jīng)加了索引,oracle還是會(huì)執(zhí)行一次全表掃描,查詢的性能不會(huì)比不加索引有所提高,反而可能由于數(shù)據(jù)庫(kù)維護(hù)索引的系統(tǒng)開(kāi)銷(xiāo)造成性能更差。 下面就是總結(jié)的能使 Oracle 索引失效的七大限制條件。
1. 沒(méi)有 WHERE 子句
2. 使用 IS NULL 和 IS NOT NULL
SELECT ... FROM emp WHERE comm IS NULL; comm 列的索引會(huì)失效
3. WHERE 子句中使用函數(shù)
如果沒(méi)有使用基于函數(shù)的索引,那么 where 子句中對(duì)存在索引的列使用函數(shù)時(shí),會(huì)使優(yōu)化器忽略掉這些索引。例如:
select * from staff where trunc(birthdate) = '01-MAY-82';
但是把函數(shù)應(yīng)用在條件上,索引是可以生效的,把上面的語(yǔ)句改成下面的語(yǔ)句,就可以通過(guò)索引進(jìn)行查找。
select * from staff where birthdate < (to_date('01-MAY-82') + 0.9999);
注意:對(duì)于 MIN, MAX 函數(shù),Oracle 仍然使用索引。
4. 使用 LIKE ‘%T’ 進(jìn)行模糊查詢
5. WHERE 子句中使用不等于操作
不等于操作包括:<>, !=, NOT colum >= ?, NOT colum <= ?
對(duì)于這個(gè)限制條件可以通過(guò) OR 替代,例如: colum <> 0 ===> colum>0 OR colum<0
6. 等于和范圍索引不會(huì)被合并使用
SELECT emp_id, emp_m, salary_q ... FROM emp WHERE job='manager' AND deptno>10
job 和 deptno 都是非唯一索引,這種條件下 oracle 不會(huì)合并索引,它只會(huì)使用第一個(gè)索引。
7. 比較不匹配數(shù)據(jù)類型
dept_id是一個(gè)varchar2型的字段,在這個(gè)字段上有索引,但是下面的語(yǔ)句會(huì)執(zhí)行全表掃描。
select * from dept where dept_id = 900198;
這是因?yàn)?oracle 會(huì)自動(dòng)把 where 子句轉(zhuǎn)換成 to_number(dept_id)=900198,相當(dāng)于使用函數(shù),這樣就限制了索引的使用。正確寫(xiě)法如下:
select * from dept where dept_id = '900198';
推薦教程:《Oracle視頻教程》
以上是oracle怎樣會(huì)讓索引失效的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話題

要安全、徹底地卸載MySQL并清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務(wù);2.卸載MySQL軟件包;3.清理配置文件和數(shù)據(jù)目錄;4.驗(yàn)證卸載是否徹底。

Oracle不僅是數(shù)據(jù)庫(kù)公司,還是云計(jì)算和ERP系統(tǒng)的領(lǐng)導(dǎo)者。1.Oracle提供從數(shù)據(jù)庫(kù)到云服務(wù)和ERP系統(tǒng)的全面解決方案。2.OracleCloud挑戰(zhàn)AWS和Azure,提供IaaS、PaaS和SaaS服務(wù)。3.Oracle的ERP系統(tǒng)如E-BusinessSuite和FusionApplications幫助企業(yè)優(yōu)化運(yùn)營(yíng)。

Oracle 中,F(xiàn)OR LOOP 循環(huán)可動(dòng)態(tài)創(chuàng)建游標(biāo), 步驟為:1. 定義游標(biāo)類型;2. 創(chuàng)建循環(huán);3. 動(dòng)態(tài)創(chuàng)建游標(biāo);4. 執(zhí)行游標(biāo);5. 關(guān)閉游標(biāo)。示例:可循環(huán)創(chuàng)建游標(biāo),顯示前 10 名員工姓名和工資。

在CentOS系統(tǒng)上搭建Hadoop分布式文件系統(tǒng)(HDFS)需要多個(gè)步驟,本文提供一個(gè)簡(jiǎn)要的配置指南。一、前期準(zhǔn)備安裝JDK:在所有節(jié)點(diǎn)上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容??蓮腛racle官網(wǎng)下載安裝包。環(huán)境變量配置:編輯/etc/profile文件,設(shè)置Java和Hadoop的環(huán)境變量,使系統(tǒng)能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個(gè)節(jié)點(diǎn)上使用ssh-keygen命令

MongoDB適合處理大規(guī)模非結(jié)構(gòu)化數(shù)據(jù),Oracle適用于需要事務(wù)一致性的企業(yè)級(jí)應(yīng)用。 1.MongoDB提供靈活性和高性能,適合處理用戶行為數(shù)據(jù)。 2.Oracle以穩(wěn)定性和強(qiáng)大功能著稱,適用于金融系統(tǒng)。 3.MongoDB使用文檔模型,Oracle使用關(guān)系模型。 4.MongoDB適合社交媒體應(yīng)用,Oracle適合企業(yè)級(jí)應(yīng)用。

MongoDB適合非結(jié)構(gòu)化數(shù)據(jù)和高擴(kuò)展性需求,Oracle適合需要嚴(yán)格數(shù)據(jù)一致性的場(chǎng)景。1.MongoDB靈活存儲(chǔ)不同結(jié)構(gòu)數(shù)據(jù),適合社交媒體和物聯(lián)網(wǎng)。2.Oracle結(jié)構(gòu)化數(shù)據(jù)模型確保數(shù)據(jù)完整性,適用于金融交易。3.MongoDB通過(guò)分片橫向擴(kuò)展,Oracle通過(guò)RAC縱向擴(kuò)展。4.MongoDB維護(hù)成本低,Oracle維護(hù)成本高但支持完善。

在CentOS系統(tǒng)上配置WebLogic數(shù)據(jù)庫(kù)連接,需要完成以下步驟:JDK安裝與環(huán)境配置:確保服務(wù)器已安裝與WebLogic版本兼容的JDK(例如,WebLogic14.1.1通常需要JDK8)。正確設(shè)置JAVA_HOME、CLASSPATH和PATH環(huán)境變量。WebLogic安裝與解壓:從Oracle官方網(wǎng)站下載適用于CentOS系統(tǒng)的WebLogic安裝包,并將其解壓到指定目錄。WebLogic用戶與目錄創(chuàng)建:創(chuàng)建一個(gè)專用的WebLogic用戶賬戶,并設(shè)置安全密碼

可以通過(guò) EXP 實(shí)用程序?qū)С?Oracle 視圖:登錄 Oracle 數(shù)據(jù)庫(kù)。啟動(dòng) EXP 實(shí)用程序,指定視圖名稱和導(dǎo)出目錄。輸入導(dǎo)出參數(shù),包括目標(biāo)模式、文件格式和表空間。開(kāi)始導(dǎo)出。使用 impdp 實(shí)用程序驗(yàn)證導(dǎo)出。
