索引的缺點(1):需要佔用磁碟空間
索引的其中一個缺點就是需要佔用磁碟空間。
這個缺點是其他 優點的基礎,因為任何一種機制,不可能只有優點,而沒有缺點,正因為建立索引,就是把排序後組織成B樹的資料,放到磁碟上,才有了索引,才有可能運用索引的各種優勢。
既然是索引,就一定會佔用空間,那麼這裡的主要問題就成了如何減少佔用的空間?
(1)減少欄位個數
如果索引中包含了很多欄位,比如:A表,一共有20個欄位,而建立的索引中包含了10個欄位,那麼會導致索引佔用的空間,接近於表的空間,整個索引的層數會增加,同樣找一條資料,需要更多IO,速度更慢。
是否索引中真的需要包含那麼多的欄位?
可以從需求角度分析,本來想讓索引覆蓋整個查詢,但實際上真正起到過濾作用的欄位,也就是放到where條件中的只有2個,那麼,這個索引最好就是這2個欄位,其他欄位,可以通過回表來獲取。
(2)佔用位元組數少的欄位
對於where 條件中的欄位,不受這個限制,就算佔用位元組數較多,也得放到索引中。
但是對於 select count(*) from tb 這種查詢,可以在佔用位元組數最少的欄位上建立索引。
比如:A表裡有很多欄位,其中 ID是numeric(10),flag是 tinyint,biz_date是datetime,name是varchar(30),memo是varchar(500)。
那麼可以在flag欄位上建立索引,可以顯著加快select count(*) from tb查詢的速度,因為flag欄位的型別是tinyint,只佔用1個位元組,所以用這個欄位建立的索引,體積會很小。
相關推薦
索引的缺點(1):需要佔用磁碟空間
索引的其中一個缺點就是需要佔用磁碟空間。 這個缺點是其他 優點的基礎,因為任何一種機制,不可能只有優點,而沒有缺點,正因為建立索引,就是把排序後組織成B樹的資料,放到磁碟上,才有了索引,才有可能運用索引的各種優勢。 既然是索引,就一定會佔用空間,那麼這裡的主要問題就成了如何
(十二)Hibernate中的多表操作(1):單向多對一
art 保存 int gen round t對象 情況 映射文件 拋出異常 由“多”方可知“一”方的信息,比如多個員工使用同一棟公寓,員工可以知道公寓的信息,而公寓無法知道員工的信息。 案例一: pojo類 public class Department {
Python學習手冊筆記(1):Python對象類型
python 在Python中一切皆對象,Python程序可以分解為模塊、語句、表達式及對象。如下所示:1 程序由模塊組成2 模塊包含語句3 語句包含表達式4 表達式建立並處理對象 內置對象(核心類型):1)數字:>>> 2+2 #整數加法4>>&g
Canvas入門(1):繪制矩形、圓、直線、曲線等基本圖形
dsm etc win cti b2c 創建 例如 .com courier 來源:http://www.ido321.com/968.html 一、Canvas的基礎知識 Canvas是HTML 5中新增的元素,專門用於繪制圖形。canvas元素就相當於一塊“畫布
Pro Android學習筆記 ActionBar(1):Home圖標區
ces tom 新的 方便 find rac vertica lba manifest ?? Pro Android學習筆記(四八):ActionBar(1):Home圖標區 2013年03月10日 ? 綜合 ? 共 3256字 ? 字號 小 中 大 ? 評論關閉
python每日一類(1):pathlib
one pre 面向 iss open log python href reg 每天學習一個python的類(大多數都是第三方的),聚沙成金。 -----------------------------------------------------------------
【開源】OSharp框架學習系列(1):總體設計及系列導航
正是 html 組織 內聚性 權限 是什麽 enc 3-0 分發 OSharp是什麽? OSharp是個快速開發框架,但不是一個大而全的包羅萬象的框架,嚴格的說,OSharp中什麽都沒有實現。與其他大而全的框架最大的不同點,就是OSharp只做抽象封裝,不做實現。依賴註
uboot命令(1):mmc命令
當前 .com 設備 十六進制 mci rgs 開發平臺 通過 硬件 版權聲明 更新:2017-06-07博主:LuckyAlan聯系:[email protected]/* */聲明:吃水不忘挖井人,轉載請註明出處! 1 文章介紹 今天在進行Android分區
idea(1):安裝配置
idea idea安裝配置 二、配置2.1、激活Help --> Register...2.2、皮膚及字體File-->Settings...-->2.2.1、皮膚 2.2.2、字體 2.3、git在https://github.com/中註冊一個賬號IDEA還需要Git客戶端,官方
多線程簡單實例(1)真的需要synchronized麽?
寫入 clas name rac pac bsp 得到 鎖定 lock 說道多線程的安全問題,很多人想到就就是加鎖。用到synchronized關鍵字。 那就要先說說synchronized問什麽能夠保證線程安全了。 首先要了解線程的工作方式:線程工作分為工作內存和主內存。
ArcGIS API for JavaScript學習(1):第一個地圖
樣式表 參數 資源 charset 底層 arcgis 順序 api navi 1.簡介 ArcGIS API for JavaScript跟隨ArcGIS 9.3同時發布,是ESRI根據JavaScript技術實現的調用ArcGIS Server REST API接口的一
springCloud(1):微服務簡介
spring cloud 微服務 一、什麽是微服務微服務架構風格是一種將一個單一應用程序開發為一組小型服務的方法,每個服務運行在自己的進程中,服務間通信采用輕量級通信機制(通常用HTTP資源API)。二、微服務架構特性1、每個微服務可獨立運行在自己的進程裏2、一系列獨立運行的微服務共同構建起整個系
ActiveReports 9實戰教程(1): 手把手搭建好開發環境Visual Studio 2013 社區版
line tool mmu tin style textbox ble mil nts ActiveReports 9剛剛公布3天。微軟就公布了 Visual Studio Community 2013 開發環境。Visual Studio Community 2013
facets學習(1):什麽是facets
遺失 air 不同的 無縫切換 over 快速 後來 樣式 觀察 ML 數據集可以包含數億個數據點,每個數據點由數百(甚至數千)的特征組成,幾乎不可能以直觀的方式了解整個數據集。為幫助理解、分析和調試 ML 數據集,谷歌開源了 Facets,一款可視化工具。 Facets
TiDB(1): server測試安裝
變量 bst emp fun big monit sub trac 下載代碼 本文的原文連接是: http://blog.csdn.net/freewebsys/article/details/50600352 未經博主同意不得轉載。 博主地址是:h
python函數(1):初始函數
索引 編程 sed 使用 在一起 用法 lease 括號 .com 在學了前面很多python的基礎類型後,我們終於可以進入下一階段,今天我們將走進一個函數的新世界。 預習: 1、寫函數,計算傳入字符串中【數字】、【字母】、【空格] 以及 【其他】的個數 2、寫函數,判
C++學習(1):最大子段和(多種解法)
多少 問題: code namespace 數據 組成 amp using () 問題:給定由n個數(可能為負數)組成的序列a1,a2,a3,...,an,求該序列子段和的最大值。 第一種解法:(最容易考慮的方法,將所有的子段一一相加,然後比較) 1 #include&
每天一個linux命令(1):scp 命令
filename use des 本地文件 lin oca www tro 服務器 scp命令主要用於兩個服務器之間文件的傳輸。 1、從服務器下載文件 scp [email protected]:/path/filename /tmp/local_destin
在STM32上實現NTFS之4:GPT分區表的C語言實現(1):主GPT表頭的實現
center mbr分區 sum 對齊 字節數 決定 容器 alt 水平 題外話:在荒廢了很久沒有更新之後……某日突然收到讀者的站內信!內容大體是詢問GPT分區表信息的讀取方式,筆者激動萬分之下,決定繼續解剖NTFS……其實GPT嚴格上不算是NTFS的內容, GPT和M
Python基礎(1):基本運算符
src com .com strong images http es2017 image 1-1 1. 算數運算: 2. 比較運算 3. 賦值運算 4. 邏輯運算 5. 成員運算 Python基礎(1):基本運算符