1. 程式人生 > >複合索引的優點和注意事項

複合索引的優點和注意事項

概念:
    單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上;
    使用者可以在多個列上建立索引,這種索引叫做複合索引(組合索引);
    複合索引在資料庫操作期間所需的開銷更小,可以代替多個單一索引;
    同時有兩個概念叫做窄索引和寬索引,窄索引是指索引列為1-2列的索引,寬索引也就是索引列超過2列的索引;
    設計索引的一個重要原則就是能用窄索引不用寬索引,因為窄索引往往比組合索引更有效;

使用:
    建立索引
    create index idx1 on table1(col1,col2,col3)
    查詢
    select * from table1 where col1= A and col2= B and col3 = C
    這時候查詢優化器,不在掃描表了,而是直接的從索引中拿資料,因為索引中有這些資料,這叫覆蓋式查詢,這樣的查詢速度非常快;

注意事項:
    1、對於複合索引,在查詢使用時,最好將條件順序按找索引的順序,這樣效率最高;
    select * from table1 where col1=A AND col2=B AND col3=D
    如果使用 where col2=B AND col1=A 或者 where col2=B 將不會使用索引

    2、何時是用複合索引
    根據where條件建索引是極其重要的一個原則;
    注意不要過多用索引,否則對錶更新的效率有很大的影響,因為在操作表的時候要化大量時間花在建立索引中

    3、複合索引會替代單一索引麼
    如果索引滿足窄索引的情況下可以建立複合索引,這樣可以節約空間和時間


備註:
    對一張表來說,如果有一個複合索引 on (col1,col2),就沒有必要同時建立一個單索引 on col1;
    如果查詢條件需要,可以在已有單索引 on col1的情況下,新增複合索引on (col1,col2),對於效率有一定的提高
    同時建立多欄位(包含5、6個欄位)的複合索引沒有特別多的好處,相對而言,建立多個窄欄位(僅包含一個,或頂多2個欄位)的索引可以達到更好的效率和靈活性

相關推薦

複合索引優點注意事項

概念:     單一索引是指索引列為一列的情況,即新建索引的語句只實施在一列上;     使用者可以在多個列上建立索引,這種索引叫做複合索引(組合索引);     複合索引在資料庫操作期間所需的開銷

mysql索引、主鍵、唯一索引、聯合索引的區別(索引的建立原則注意事項

索引對資料庫效能的影響? 本質:縮小查詢範圍。大大減少需要掃描的資料量。大大提高查詢的速度,降低寫的速度,佔用磁碟。將隨機I/O變成順序I/O 特大的表怎麼解決查詢問題? 分割槽。 主鍵索引和唯一索引的區別? 一個表只能有一個主鍵索引,但可以有多個唯一索引, 主鍵索引是唯一索

資料庫索引的建立 注意事項

PS:索引不是給你使用的,而是資料庫本身使用,索引只是為了讓你的查詢更加快速而已 CREATE INDEX index_name ON table_name (column_name) 註釋:”column_name” 規定需要索引的列。 SQL CR

位運算子的基本使用注意事項

                                      &n

箭頭性函式的一些特徵注意事項

1、typeof運算子和普通的函式一樣 let commFunc = () => {}; console.log(typeof commFunc); 輸出為function。 let arrowFunc = () => {}; console.log(typeof arro

java中介面(interface)及使用方法注意事項

1、介面:一種把類抽象的更徹底,接口裡只能包含抽象方法的“特殊類”。介面不關心類的內部狀態資料,定義的是一批類所遵守的規範。(它只規定這批類裡必須提供某些方法,提供這些方法就可以滿足實際要求)。 在JAVA程式語言中是一個抽象型別,是抽象方法的集合,介面通常以interface來宣告。一個類通過

lua 1 基本語法注意事項

筆記總結自: http://www.runoob.com/lua/lua-data-types.html   基本資料型別: 資料型別 描述 nil 這個最簡單,只有值nil屬於該類,表示一個無效值(在條件表示式中相當於false)。

0到3個月的寶寶護理重點注意事項,家長要記住哦

寶寶從出生的那一天開始每個月都是有不同的變化,而且會隨著寶寶的成長,有些月份會新增一些寶寶的相關護理的要點和注意事項。當然不管是哪個月照顧寶寶的任何方面都是需要細心和耐心的,下面相關的一些護理要點僅供家長們參考,畢竟每個寶寶都是獨一無二的,每個家庭在寶寶的養育方面都是不一樣的。 1個月的寶

相機標定中部分疑問注意事項

相機標定基本知識 對於針孔攝像機模型,一幅檢視是通過透視變換將三維空間中的點投影到影象平面。投影公式如下: 或者 這裡(X, Y, Z)是一個點的世界座標,(u, v)是點投影在影象平面的座標,以畫素為單位。A被稱作攝像機矩陣,或者內參數矩陣。(cx, c

Redis 設定 Key/value 的規則定義注意事項(附工具類)

對於redis的儲存key/value鍵值對,經過多次踩坑之後,我們總結了一套規則;這篇文章主要講解定義key/value鍵值對時的定義規則和注意事項。 前面一篇文章講了如何定義Redis的客戶端和Dubbo整合儲存器;當我們真正開始開發的時候,就會突然發現,有點不知道如何去定義Redis的K

【異常帖】--- 大資料出現的所有異常,錯誤,注意事項整理---持續更新.....

一、Ubuntu --> 修改主機名稱之後,要特別主要修改主機和ip的對映(否則會造成java.net.UnknownHostException: 主機名: 主機名的異常,mkdir: Call From java.net.UnknownHostException: s100: s100: u

文章索引-軟體開發注意事項(未完待續)

  此處整理解決一些問題的關鍵點。   Windows:   防火牆: Exercising the Firewall using C++  。 VC2010編譯,Win7,Win10實驗成功,Exe需要管理員執行。 降低-記憶體(

getch()使用注意事項

getch(): 所在標頭檔案:conio.h 函式用途:從控制檯讀取一個字元,但不顯示在螢幕上 函式原型:int getch(void) 返回值:讀取的字元 例如: char ch;或int ch; getch();或ch=getch(); 用getch();會等待你按下任意鍵,再繼續執行下面的語

1112_maven專案使用Druid連線池配置步驟注意事項[mysql資料庫]

maven專案使用Druid連線池配置步驟和注意事項[mysql資料庫] 2018年06月13日 17:09:25 個人分類: java 注:這兩天搭建專案時,使用Druid連線池入了不少坑;以此記錄; MySQL Server 5.7.21 + mysql-connector-j

MongoDB 索引的建立注意事項、以及建索引導致鎖庫的解決方案

                          MongoDB索引的建立注意事項        在資料量超大的情形下,

Redis設定Key/value的規則定義注意事項(附工具類)

對於redis的儲存key/value鍵值對,經過多次踩坑之後,我們總結了一套規則;這篇文章主要講解定義key/value鍵值對時的定義規則和注意事項。 前面一篇文章講了如何定義Redis的客戶端和Dubbo整合儲存器;當我們真正開始開發的時候,就會突然發現,有點不知道如何去定義Redis的K

三週學會小程式第一講:小程式申請注意事項

註冊 註冊郵箱 個人申請小程式非常簡單,首先你需要註冊一個全新的郵箱。 當然用你的個人郵箱也可以,小編考慮到後面你可以再次開發自己的小程式,所以這裡還是重新申請一個比較好。網易郵件一個手機號可以申請15個郵箱,是一個不錯的選擇 註冊小程式 進入 https://mp.weixin.qq.com/ 頁面

遞迴概述注意事項

package cn.itcast_01; /* * 遞迴:方法定義中呼叫方法本身的現象 * * 方法的巢狀呼叫,這不是遞迴。 * Math.max(Math.max(a,b),c); * * public class Test { publ

selenium程式碼注意事項

import java.util.ArrayList; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.

eventbus 的使用注意事項

此文不介紹EventBus的基礎使用,只說明使用的時候注意事項,這裡記載我使用的時候遇到的問題 1、後註冊,先發訊息,那麼使用粘性事件 2、可能有多處接受粘性事件,但是不同的事件不要使用同一個類來發送(事件儲存在Map裡,而key是類class),因為粘性事件使用後需要remove掉,而在rem