最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle復合索引與空值的索引使用問題小結

 更新時間:2018年02月07日 16:07:10   作者:Leohahah  
最近小編在群里討論sql優(yōu)化的問題,今天小編給大家?guī)砹薕racle復合索引與空值的索引使用問題小結,需要的朋友參考下吧

昨天在QQ群里討論一個SQL優(yōu)化的問題,語句大致如下:

select A,min(B) from table group by A;--A,B都沒有not null約束,A列無空值,B列有空值。--存在復合索引IX_TEST(A,B)

于是手動測試,環(huán)境采用Oracle自帶的scott用戶下的emp表。

1.首先查看如下語句的執(zhí)行計劃(此時表只有主鍵索引):

2.添加IX_TEST(deptno,comm)后查看執(zhí)行計劃:

發(fā)現(xiàn)依然是全表掃描。

3.為deptno列添加非空約束后再次查看執(zhí)行計劃:

4.總結:

Btree索引是不存儲空值的,這個是所有使用Btree索引的數(shù)據(jù)庫的共同點。

在本例中我們創(chuàng)建了deptno,comm的符合索引。如果deptno沒有非空約束,那么說明有的record不會出現(xiàn)在索引中,此時想要找到min(comm)就必須回表才能確定deptno為null的行是否有comm的值。此時優(yōu)化器認為全表掃描比掃描索引再回表更為合理,因此選擇全表掃描。

當我們添加了非空約束后,deptno不可能為空,因此索引的key值數(shù)等于表總行數(shù),另一列comm即便為空也不影響min()取值,只需要掃描索引即可得到所需結果,此時優(yōu)化器選擇索引掃描。

而在Mysql中無論復合索引首列是否存在非空約束,都會使用索引,deptno為null的會全部分在一組取min(comm),可能是Mysql的BTREE索引與Oracle的有所不同,使得首列為空都可以無需回表。

最后:Oracle的列能添加非空約束的一定要添加。

總結

以上所述是小編給大家介紹的Oracle復合索引與空值的索引使用問題小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • Oracle12c的數(shù)據(jù)庫向11g導進的方法

    Oracle12c的數(shù)據(jù)庫向11g導進的方法

    這篇文章主要介紹了 Oracle12c的數(shù)據(jù)庫向11g導進的方法的相關資料,需要的朋友可以參考下
    2016-03-03
  • oracle 數(shù)據(jù)庫閃回相關語句介紹

    oracle 數(shù)據(jù)庫閃回相關語句介紹

    本文將詳細介紹oracle 數(shù)據(jù)庫閃回相關語句,需要了解跟多的朋友可以參考下
    2012-11-11
  • Oracle 存儲過程教程

    Oracle 存儲過程教程

    一個簡單的oracle分頁存儲過程的實現(xiàn)和調用。在看了眾多的分頁存儲過程以后發(fā)現(xiàn)都是針對sqlserver的,而沒有oracle的,因此想寫一個關于oracle的存儲過程,因為我用到的數(shù)據(jù)庫是oracle。
    2009-10-10
  • ORACLE創(chuàng)建DBlink的過程及使用方法

    ORACLE創(chuàng)建DBlink的過程及使用方法

    這篇文章主要介紹了ORACLE DBlink的創(chuàng)建和使用,本文通過實例代碼給大家給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Linux 自動備份oracle數(shù)據(jù)庫詳解

    Linux 自動備份oracle數(shù)據(jù)庫詳解

    這篇文章主要介紹了Linux 自動備份oracle數(shù)據(jù)庫詳解方法的相關資料,數(shù)據(jù)庫的備份的重要性,不言而喻,希望能幫到大家,需要的朋友可以參考下
    2016-10-10
  • VMware中l(wèi)inux環(huán)境下oracle安裝圖文教程(二)ORACLE 10.2.05版本的升級補丁安裝

    VMware中l(wèi)inux環(huán)境下oracle安裝圖文教程(二)ORACLE 10.2.05版本的升級補丁安裝

    這篇文章是VMware中l(wèi)inux環(huán)境下oracle安裝圖文教程系列的第二篇,主要介紹了ORACLE 10.2.05版本的升級補丁安裝,需要的朋友可以參考下
    2014-08-08
  • oracle 10g 精簡版安裝步驟分享

    oracle 10g 精簡版安裝步驟分享

    今天遇到個軟件要求安裝oracle client端,于是考慮裝精簡版本的,以下是具體的安裝步驟,特分享下,方便需要的朋友
    2014-06-06
  • 使用Oracle通過gateway連接MSSQL的詳細流程

    使用Oracle通過gateway連接MSSQL的詳細流程

    oracle Gateway是Oracle公司提供的一種訪問非Oracle數(shù)據(jù)源的方法,它可以將非Oracle數(shù)據(jù)源(如SQLserver、mysql等)的數(shù)據(jù)看作是oracle數(shù)據(jù)庫中的表,從而可以使用SQL和PLSQL等Oracle語言來訪問這些數(shù)據(jù),本文介紹了使用Oracle通過gateway連接MSSQL的詳細流程
    2024-12-12
  • ORACLE中關于表的一些特殊查詢語句

    ORACLE中關于表的一些特殊查詢語句

    這篇文章主要介紹了ORACLE中關于表的一些特殊查詢語句通過多種方式給大家介紹,在文末給大家提到了oracle的單表查詢語句,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 詳解Oracle如何將txt文件中的數(shù)據(jù)導入數(shù)據(jù)庫

    詳解Oracle如何將txt文件中的數(shù)據(jù)導入數(shù)據(jù)庫

    這篇文章主要介紹了Oracle如何將txt文件中的數(shù)據(jù)導入數(shù)據(jù)庫,文中通過代碼示例和圖文結合的方式給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03

最新評論

长宁区| 吴旗县| 嘉鱼县| 定南县| 太保市| 金堂县| 嘉定区| 汾阳市| 民和| 泰兴市| 宜章县| 上饶市| 瑞金市| 二连浩特市| 睢宁县| 建昌县| 保德县| 玛多县| 内丘县| 华亭县| 日照市| 竹北市| 新和县| 全州县| 偏关县| 丰顺县| 鄂托克前旗| 宜章县| 通渭县| 木兰县| 竹溪县| 海晏县| 汤原县| 新田县| 普兰县| 溧阳市| 宁津县| 渝中区| 延庆县| 宁海县| 大余县|