1. 程式人生 > >高效能Mysql第三版(第五章建立高效能索引)

高效能Mysql第三版(第五章建立高效能索引)

mysql中索引結構圖

根據索引的結構提出的一些索引優化:

1、如果正在使用InnoDB並且沒有什麼資料需要聚集,那麼可以定義一個代理鍵(surrogate key)作為作為主鍵,這種主鍵的資料應該和應用無關,最簡單的方法是使用AUTO_INCREMENT自增列。這樣可以保證資料行是按順序寫入的,對於根據主鍵做關聯操作的效能也會更好。

2、避免隨機的(不連續且值的分佈範圍非常大)聚簇索引,特別是對於I/O密集型的應用,例如,從效能的角度考慮,使用UUID作為舉措索引則會很糟糕,踏實的聚簇索引的插入變得完全隨機,磁碟訪問效率低,提高的I/O的次數。


但是並不是所有時候順序索引都一定是好的

    


查詢時候更加高效的利用索引

   覆蓋索引

    通常大家都會根據查詢的where條件來建立合適的索引,不過這只是索引優化的一方面。設計優秀的索引應該考慮整個查詢,而不是淡淡是where條件部分。索引確實是一種查詢資料高效的方式,但是mysql也可以用使用索引來直接獲取列的資料,那麼還有什麼必要在回表查詢呢?

如果一個索引包含(或者說覆蓋)所有需要查詢的欄位的值,我們就稱之為“索引覆蓋”。

   百度解釋

理解方式一:就是select的資料列只用從索引中就能夠取得,不必讀取資料行,換句話說查詢列要被所建的索引覆蓋。 理解方式二:索引是高效找到行的一個方法,但是一般資料庫也能使用索引找到一個列的資料,因此它不必讀取整個行。畢竟索引
葉子節點
儲存了它們索引的資料;當能通過讀取索引就可以得到想要的資料,那就不需要讀取行了。一個索引包含了(或覆蓋了)滿足查詢結果的資料就叫做覆蓋索引。[1] 理解方式三:是非聚集複合索引的一種形式,它包括在查詢裡的Select、Join和Where子句用到的所有列(即建索引的欄位正好是覆蓋查詢條件中所涉及的欄位,也即,索引包含了查詢正在查詢的資料)。

作用:
  提高查詢效率,減少直接的取行資料而是通過索引直接找到一個列的資料,減少IO。
  http://baike.baidu.com/link?url=xV3ymvny3OtoYJqOGcXTWkOAC9kdl1QHyjzjp43Ob9AWUwis_bftyTkq7nAsZ_V5r-n4DrmQ7cnEGN5LyBtcNa

 

5建立高效能索引-總結


相關推薦

高效能Mysql建立高效能索引

mysql中索引結構圖 根據索引的結構提出的一些索引優化: 1、如果正在使用InnoDB並且沒有什麼資料需要聚集,那麼可以定義一個代理鍵(surrogate key)作為作為主鍵,這種主鍵的資料應該和應用無關,最簡單的方法是使用AUTO_INCREMENT自增列。這樣可

python核心程式設計學習筆記:正則表示式

注:下面有些內容不全都來源於原著,這些都是通過各方面的資料收集合並的結果。 目錄 1、元字元 3、邊界詞 4、分組詞 一、正則表示式介紹 正則表示式為高階的文字模式匹配、抽取、與/或文字形式的搜尋和替換功

重讀《學習JavaScript資料結構與演算法-》- 3 陣列

定場詩 守法朝朝憂悶,強梁夜夜歡歌; 損人利己騎馬騾,正值公平捱餓; 修橋補路瞎眼,殺人放火兒多; 我到西天問我佛,佛說:我也沒轍! 前言 讀《學習JavaScript資料結構與演算法》- 第3章 陣列,本小節將繼續為各位小夥伴分享陣列的相關知識:ES6陣列的新功能。 一、ES6陣列新功能 ES5和ES6陣列

重讀《學習JavaScript資料結構與演算法-》- 6 連結串列

定場詩 傷情最是晚涼天,憔悴廝人不堪言; 邀酒摧腸三杯醉.尋香驚夢五更寒。 釵頭鳳斜卿有淚,荼蘼花了我無緣; 小樓寂寞新雨月.也難如鉤也難圓。 前言 本章為重讀《學習JavaScript資料結構與演算法》的系列文章,該章節主要講述資料結構-連結串列,以及實現連結串列的過程和原理。 連結串列 連結串列,為什麼要

CentOSLinux 學習2018年6月6日

CentOS安裝ifconfig 命令方式yum -y install net-toos運行這個命令就安裝了安裝完Putty,後,設置Putty秘鑰putty 秘鑰設置,在安裝putty的壓縮包裏有一個putty證,執行文件(PUTTYGEN),打開後點擊:Generate 這個時候就會生出秘鑰公鑰,這個秘鑰

lavarel從零開始-路由,控制器,視圖

clas space web 傳參 route where ace enter ber routes/web.php寫路由 基本路由: Route::get(‘/‘, function () { return view(‘welcome‘);});Route::get

網絡操作系統 、四、習題

spa size 異步 -s 所有 處理機 多個 執行過程 分配     第三章 (1)程序和進程無一一對應關系 (2)各個進程在並發執行過程中會產生相互制約關系,而程序本身是靜態的,不存在這種異步特征 (3)進程是資源分配的基本單位,同一進程的所有線程共享該進程的

《Javascript 高階程式設計()》筆記0x9 OOP 建立物件

目錄  建立物件     工廠模式      建構函式模式       將建構函式當作函式        建構函式的問題  

演算法導論fibonacci,二分查詢,歸併排序

3.1 乘方實現 A:實現方法 乘方實現有兩種方法,一個是使用O(N)的時間複雜度還有種方法可以使用遞迴的方式,遞迴的公式如下 通過兩種方式的實現,可以進行比較兩種方法的時間複雜度 B:時間複雜度 第二種方法的遞迴表示式如下 通過主定理可以算出第二種的時間複雜

數理統計與資料分析習題 3 12題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 令 f(x,y)=c(x2−y2)e−x,0≤x<∞,−x≤y<xf(x,y)=c(x^{2}-y^{2})e^{-x} ,0\leq x &lt

數理統計與資料分析習題 3 15題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 假定X和Y具有聯合密度函式 f(x,y)=c1−x2−y2,x2+y2≤1f_(x,y)=c\sqrt{1-x^2-y^2}, \quad x^2+y^2\leq1f(​x,y)=c1

數理統計與資料分析習題 3 16題

fX2(x2)=∫x21fX1X2(x1x2)dx1=∫x211x1dx1=[lnx1]x21=ln1x20≤x2≤x1\begin{aligned} f_{X_{2}}(x_{2})&=\int_{x_{2}}^{1}f_{X_{1}X_{2}}(x_{1}x_{2}) dx_{1}\\ &

數理統計與資料分析習題 3 17題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 令(X,Y)是隨機點,均勻地選自區域 R={(x,y):∣x∣+∣y∣≤1}R=\left\{(x,y):|x|+|y|\leq1 \right\}R={(x,y):∣x∣+∣y∣≤1

數理統計與資料分析習題 3 19題

P(T1>T2)=∬t1>t2f(t1,t2)dt2dt1=∫0∞∫0t1αe−αt1∗βe−βt2dt2dt1=∫0∞αe−αt1∗β∗1−β[e−βy]0t1dt2=∫0∞(−αe−αt1e−βx+α−αt1)dt1=∫0∞(α−αt1)dt1−∫0∞αe−αt1e−βxdt1

數理統計與資料分析習題 3 20題

以下解題過程都是由網際網路收集或自己計算而來,並不保證正確,如有疑問可以留言討論 題目 假設通訊網路中的節點具有這樣的性質,如果兩個資訊包到達的時間間隔小於τ, 它們就會發生衝突,必須重新傳送,如果兩個包到達的時間相互獨立,且服務[0,T]上的均勻分佈 a.問它

數理統計與資料分析習題 3 22題

P{N(t1−t0)=k∣N(t2−t0)=n}=P{N(t1−t0)=k,N(t2−t0)=n}P{N(t2−t0)=n}=P{N(t1−t0)=k,N(t2−t1)=n−k}P{N(t2−t0)=n}=e−λ(t1−t0)⋅(λ(t−t0))kk!⋅e−λ(t2−t1)⋅(−λ(t2−t1))n−k(n−

Python學習元組和檔案讀寫

元組 元組和列表差不多,也是存一組數,但是元組一旦建立便不能在修改 只有兩個方法:count 和index 從語法上講:編寫在圓括號中    在程式碼的首行加入:#-*-coding:utf-8-*-   可以輸入中文字 ————————

《深入理解計算機系統家庭作業參考答案

簡述 最近看docker和k8s的底層實現原理,嚴重感覺自己對底層的知識瞭解不足,於是開始業餘時間深入看一些底層書籍,就找了本據說是理解整個計算機體系的入門書-《深入理解計算機系統》.直接買的最新的第三版,從第三章開始看的,第二章接下來有心情再看(看了幾眼全是

數理統計與資料分析習題 3 14題

以下解題過程都是由網際網路收集而來,並不保證正確,如有疑問可以留言討論 題目 三維空間中有一個點服從單位球上的均勻分佈。 a.計算座標x,y,z的邊際函式 b.計算座標x和y的聯合分佈 c.計算給定Z=0的條件下座標xy的密度 解題思路 單位球體均勻分佈密度等於

《利用python進行資料分析. 資料清洗和準備

7.1 處理缺失資料 缺失資料在pandas中呈現的方式有些不完美,但對於大多數使用者可以保證功能正常。對於數值資料,pandas使用浮點值NaN(Not a Number)表示缺失資料。我們稱其為哨兵值,可以方便的檢測出來。 處理缺失資料有以下幾個方