oracle索引失效的原因:1、沒有使用WHERE子句;2、使用「IS NULL」和「IS NOT NULL」;3、在WHERE子句中使用函數(shù);4、使用LIKE進行模糊查詢;5、在WHERE子句中使用不等於操作;6、比較不符資料型別等。
本教學操作環(huán)境:Windows10系統(tǒng)、Oracle 11g版、Dell G3電腦。
oracle怎麼會讓索引失效
Oracle 索引的目標是避免全表掃描,提高查詢效率,但有些時候卻適得其反。
例如一張表中有上百萬條數(shù)據(jù),對某個字段加了索引,但是查詢時性能並沒有什麼提高,這可能是 oracle 索引失效造成的。 oracle 索引有一些限制條件,如果你違反了這些索引限制條件,那麼即使你已經加了索引,oracle還是會執(zhí)行一次全表掃描,查詢的性能不會比不加索引有所提高,反而可能由於數(shù)據(jù)庫維護索引的系統(tǒng)開銷造成效能更差。以下就是總結的能使 Oracle 索引失效的七大限制條件。
1. 沒有WHERE 子句
2. 使用IS NULL 和IS NOT NULL
SELECT ... FROM emp WHERE comm IS NULL; comm 列的索引會失效
3. WHERE 子句中使用函數(shù)
如果沒有使用基於函數(shù)的索引,那麼where 子句中對存在索引的欄位使用函數(shù)時,會使最佳化器忽略掉這些索引。例如:
select * from staff where trunc(birthdate) = '01-MAY-82';
但是把函數(shù)應用在條件上,索引是可以生效的,把上面的語句改成下面的語句,就可以透過索引進行查找。
select * from staff where birthdate < (to_date('01-MAY-82') + 0.9999);
注意:對於 MIN, MAX 函數(shù),Oracle 仍然使用索引。
4. 使用LIKE '%T' 進行模糊查詢
5. WHERE 子句中使用不等於運算
不等於操作包括:<>, !=, NOT colum >= ?, NOT colum <= ?
對於這個限制條件可以透過OR 替代,例如: colum <> 0 ===>? ?colum>0 OR colum<0
6. 等於和範圍索引不會合併使用
SELECT emp_id, emp_m, salary_q ... FROM emp WHERE job='manager' AND deptno>10
job 和deptno 都是非唯一索引,這種條件下oracle 不會合併索引,它只會使用第一個索引。
7. 比較不匹配資料類型
dept_id是一個varchar2型的字段,在這個字段上有索引,但是下面的語句會執(zhí)行全表掃描。
select * from dept where dept_id = 900198;
這是因為 oracle 會自動把 where 子句轉換成 to_number(dept_id)=900198,相當於使用函數(shù),這樣就限制了索引的使用。正確寫法如下:
select * from dept where dept_id = '900198';
推薦教學:《Oracle影片教學》
以上是oracle怎麼會讓索引失效的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

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

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

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

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

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

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

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

可以通過 EXP 實用程序導出 Oracle 視圖:登錄 Oracle 數(shù)據(jù)庫。啟動 EXP 實用程序,指定視圖名稱和導出目錄。輸入導出參數(shù),包括目標模式、文件格式和表空間。開始導出。使用 impdp 實用程序驗證導出。
