IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)Oracle → oracle表加索引反而查詢慢的原因

oracle表加索引反而查詢慢的原因

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

  這兩天在大數(shù)據(jù)庫(kù)的查詢,有幾個(gè)存儲(chǔ)過程查詢下來(lái)用了好幾分鐘。一看表,好像索引比較少,就使勁加了些,發(fā)現(xiàn)加了反而查詢速度更慢了。其實(shí)我們只要懂得索引的原理便可以知道索引不是想隨便加就加。下面看一下索引的一些原理,我們就可以知道或許你也犯了同樣的加了索引反而速度更慢的錯(cuò):

  當(dāng)用戶從數(shù)據(jù)表中查詢數(shù)據(jù)時(shí),Oracle數(shù)據(jù)庫(kù)提供了兩種查詢的方式。一是從表中讀取每一行,就是大家常說(shuō)的全表掃描;二是通過ROWID一此讀取一行。當(dāng)表中記錄比較多的時(shí)候,很明顯第二種方式能夠更快的定位記錄內(nèi)容。而索引其實(shí)就是建立在這個(gè)查詢?cè)碇系摹H绗F(xiàn)在某個(gè)表中有300多萬(wàn)條記錄,而現(xiàn)在用戶可能只需要了解其中的10條記錄信息。此時(shí)如果使用索引標(biāo)識(shí)讀取的塊,則可以執(zhí)行比較少的I/O,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)很快找到用戶所需要的內(nèi)容。而如果沒有使用索引的話,則需要讀取表中所有的塊。

  如果在這個(gè)表中加入了索引,那么到底對(duì)數(shù)據(jù)庫(kù)的性能影響有多大呢?這個(gè)就不好說(shuō)了,因?yàn)槠涓芏嘁蛩叵嚓P(guān)。如跟數(shù)據(jù)選擇性直接相關(guān)。如果用戶的數(shù)據(jù)非常具有選擇性,則表中家功能只有很少的行匹配索引值,則Oracle將能夠快速查詢匹配所引值得ROWID的索引,并且可以快速查詢少量的相關(guān)表快。如還是上面這個(gè)表中,其如果存儲(chǔ)有某個(gè)市的所有常住人口信息,其中身份證號(hào)碼肯定是少不了的。如此時(shí)用戶想根據(jù)身份證號(hào)碼來(lái)查詢某個(gè)人的信息時(shí),那么數(shù)據(jù)庫(kù)能夠在很短的時(shí)間內(nèi)給出響應(yīng)。這主要是因?yàn)橛脩籼峁┑臄?shù)據(jù)非常具有選擇性,基本上跟數(shù)據(jù)庫(kù)中的索引值是一一對(duì)應(yīng)的。而如果用戶想通過出身年月信息來(lái)查詢信息的話,則其數(shù)據(jù)庫(kù)反映的速度就會(huì)比較慢了。

  可見索引對(duì)數(shù)據(jù)庫(kù)性能的影響直接跟數(shù)據(jù)的選擇性掛鉤。這對(duì)于數(shù)據(jù)庫(kù)管理員設(shè)計(jì)索引時(shí)很有啟發(fā)性。如數(shù)據(jù)庫(kù)管理員在設(shè)計(jì)索引時(shí),最好能夠選擇哪些具有唯一性的字段或者重復(fù)性比較少的字段。如此的話,索引對(duì)于數(shù)據(jù)庫(kù)性能來(lái)說(shuō)才有比較大的價(jià)值。

關(guān)鍵詞標(biāo)簽:oracle

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門文章 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 誤刪Oracle數(shù)據(jù)庫(kù)實(shí)例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語(yǔ)句修改字段類型-oracle修改SQL語(yǔ)句案例 Oracle中使用alter table來(lái)增加,刪除,修改列的語(yǔ)法 ORACLE SQL 判斷字符串是否為數(shù)字的語(yǔ)句 ORACLE和SQL語(yǔ)法區(qū)別歸納(1) oracle grant 授權(quán)語(yǔ)句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法