點(diǎn)擊上方 "程序員小樂(lè )"關(guān)注, 星標或置頂一起成長(cháng)
每天凌晨00點(diǎn)00分, 第一時(shí)間與你相約
每日英文
If nothing can be done, then just let nature take its course.
如果無(wú)能為力,那就它順其自然吧。
每日掏心話(huà)
一切順其自然,專(zhuān)注于過(guò)程而少想結果,安于當下,不想過(guò)去亦不想未來(lái),把每一個(gè)發(fā)生都當作一種修煉。
來(lái)自:素小暖OSC | 責編:樂(lè )樂(lè )
鏈接:my.oschina.net/u/4006148/blog/3225442
程序員小樂(lè )(ID:study_tech)第 834 次推文 圖片來(lái)自百度
往日回顧:前后端分離模式下的權限設計方案
正文
最近在做有關(guān)查詢(xún)數據庫的工作,由于一個(gè)表的數據量過(guò)大,導致程序進(jìn)程卡死情況出現,SQL優(yōu)化迫在眉睫,索引閃亮登場(chǎng)!
Oracle中查詢(xún)走索引的情況:
1、對返回的行無(wú)任何限定條件,即沒(méi)有where子句。
2、未對數據表與任何索引主列相對應的行限定條件。
例如:在id-name-time列創(chuàng )建了三列復合索引,那么僅對name列限定條件不能使用這個(gè)索引,因為name不是索引的主列。
3、對索引的主列有限定條件,但是在條件表達式里使用以下表達式則會(huì )使索引失效,造成權標掃描:
(1)where子句中對字段進(jìn)行函數、表達式操作,這將導致引擎放棄使用索引而進(jìn)行全表掃描。
(2)查詢(xún)字段is null時(shí)索引失效,引起全表查詢(xún)。
解決辦法:SQL語(yǔ)法中使用null會(huì )有很多麻煩,最好索引列時(shí)not null的;對于is null,可以建立組合索引, nvl(字段,0),對表和索引analyse后,is null查詢(xún)時(shí)可以重新啟用索引查找,但是效率還不是值得肯定;is not null時(shí)永遠不會(huì )使用索引。一般數據量大的表不要用is null查詢(xún)。
(3) 查詢(xún)條件中使用了不等于操作符(