數據庫之索引(二)

目錄

一、如何判斷數據庫的索引是否生效

二、如何評估索引創建的是否合理

三、索引是否越多越好

四、如何處理數據庫索引失效

五、是否所有的字段都適合創建索引


一、如何判斷數據庫的索引是否生效

????????可以使用EXPLAIN語句查看索引是否正在使用。

? ? ? ? 例如,假設已經創建了book表,并已經在其year_publication字段上建立了普通索引。執行如下語句:

EXPLAIN SELECT * FROM book WHERE year_publication=1990;

????????EXPLAIN語句將為我們輸出詳細的SQL執行信息,其中:

? ? ? ? ①possible_keys行給出了MySQL在搜索數據記錄時可選用的各個索引。

? ? ? ? ②key行是MySQL實際選用的索引。

????????如果possible_keys行和key行都包含year_publication字段,則說明在查詢時使用了該索引。

二、如何評估索引創建的是否合理

????????建議按照如下的原則來設計索引:

????????1. 避免對經常更新的表進行過多的索引,并且索引中的列要盡可能少。應該經常用于查詢的字段創建索引,但要避免添加不必要的字段。

????????2. 數據量小的表最好不要使用索引,由于數據較少,查詢花費的時間可能比遍歷索引的時間還要短,索引可能不會產生優化效果。

????????3. 在條件表達式中經常用到的不同值較多的列上建立索引,在不同值很少的列上不要建立索引。比如在學生表的“性別”字段上只有“男”與“女”兩個不同值,因此就無須建立索引,如果建立索引不但不會提高查詢效率,反而會嚴重降低數據更新速度。

????????4. 當唯一性是某種數據本身的特征時,指定唯一索引。使用唯一索引需能確保定義的列的數據完整性,以提高查詢速度。

????????5. 在頻繁進行排序或分組(即進行group by或order by操作)的列上建立索引,如果待排序的列有多個,可以在這些列上建立組合索引。

三、索引是否越多越好

????????索引并非越多越好,一個表中如有大量的索引,不僅占用磁盤空間,還會影響INSERT、DELETE、UPDATE等語句的性能,因為在表中的數據更改時,索引也會進行調整和更新

四、如何處理數據庫索引失效

????????可以采用以下幾種方式,來避免索引失效:

????????1. 使用組合索引時,需要遵循“最左前綴”原則;

????????2. 不在索引列上做任何操作,例如計算、函數、類型轉換,會導致索引失效而轉向全表掃描;

????????3. 盡量使用覆蓋索引(之訪問索引列的查詢),減少 select * 覆蓋索引能減少回表次數;

????????4. MySQL在使用不等于(!=或者<>)的時候無法使用索引會導致全表掃描;

????????5. LIKE以通配符開頭(%abc)MySQL索引會失效變成全表掃描的操作;

????????6. 字符串不加單引號會導致索引失效(可能發生了索引列的隱式轉換);

????????7. 少用or,用它來連接時會索引失效。

五、是否所有的字段都適合創建索引

????????不是。

????????下列幾種情況,是不適合創建索引的:

????????1. 頻繁更新的字段不適合建立索引;

????????2. where條件中用不到的字段不適合建立索引;

????????3. 數據比較少的表不需要建索引;

????????4. 數據重復且分布比較均勻的的字段不適合建索引,例如性別、真假值;

????????5. 參與列計算的列不適合建索引。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41710.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41710.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41710.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

70.Bug:使用list.sort(Comparator.Comping(User::getCreateTime).reverse())空指針異常

1.出錯原因&#xff1a;在xml中沒有做字段映射 報錯語句復現&#xff1a; List<User> listnew ArrayList<>()&#xff1b; xml中進行查詢數據&#xff0c;數據存放在list中........... //排序 list.sort(Comparator.Comping(User::getCreateTime).reverse())&…

經典的layui框架,還有人用嗎?令人惋惜。

自從layui官網宣布關閉之后&#xff0c;layui框架的用戶飛速下滑&#xff0c;以至于到現在貝格前端工場承接的項目中&#xff0c;鮮有要求使用layui框架的&#xff0c;那么個框架還有人用嗎&#xff1f; 一、layui沒落是不是jquery惹的禍 layui的沒落與jQuery無關。layui框架…

Hi3861 OpenHarmony嵌入式應用入門--UDP Server

本篇使用的是lwip編寫udp服務端。需要提前準備好一個PARAM_HOTSPOT_SSID宏定義的熱點&#xff0c;并且密碼為PARAM_HOTSPOT_PSK。 修改網絡參數 在Hi3861開發板上運行上述四個測試程序之前&#xff0c;需要根據你的無線路由、Linux系統IP修改 net_params.h文件的相關代碼&…

深入理解 Docker 容器技術

一、引言 在當今的云計算和軟件開發領域&#xff0c;Docker 容器技術已經成為了一項不可或缺的工具。它極大地改變了應用程序的部署和運行方式&#xff0c;為開發者和運維人員帶來了諸多便利。 二、Docker 容器是什么&#xff1f; Docker 容器是一種輕量級、可移植、自包含的…

起底:Three.js和Cesium.js,二者異同點,好比全科和專科.

Three.js和Cesium.js是兩個常用的webGL引擎&#xff0c;很多小伙伴容易把它們搞混淆了&#xff0c;今天威斯數據來詳細介紹一下&#xff0c;他們的起源、不同點和共同點&#xff0c;閱讀后你就發現二者就像全科醫院和專科醫院的關系&#xff0c;很好識別。 一、二者的起源 Th…

性能測試相關理解---性能測試流程(二)

六、性能測試流程&#xff08;如何做性能測試&#xff1f;) 根據學習全棧測試博主的課程做的筆記 1、前期準備– 項目初期就開始&#xff0c;業務需求評審時盡量參與,對業務更深刻的認識&#xff08;確定哪些是核心業務、哪些可能存在并發請求、確定什么地方會出現瓶頸,方便后…

WebOffice在線編微軟Offfice,并以二進制流的形式打開Word文檔

在日常辦公場景中&#xff0c;我們經常會遇到這種場景&#xff1a;我們的合同管理系統的各種Word,excel,ppt數據都是以二進制數組的形式存儲在數據庫中&#xff0c;如何從數據庫中讀取二進制數據&#xff0c;以二進制數據作為參數&#xff0c;然后加載到瀏覽器的Office窗口&…

【無標題】地平線2西之絕境/Horizon Forbidden West? Complete Edition(更新:V1.3.57)

游戲介紹 與埃洛伊同行&#xff0c;在危險壯美的邊疆之地揭開種種未知的神秘威脅。此完整版可完整享受廣受好評的《地平線 西之絕境?》內容和額外內容&#xff0c;包括在主線游戲后展開的后續故事“炙炎海岸”。 重返《地平線》中遙遠未來的后末日世界&#xff0c;探索遠方的土…

Twitter群發消息API接口的功能?如何配置?

Twitter群發消息API接口怎么申請&#xff1f;如何使用API接口&#xff1f; 為了方便企業和開發者有效地與用戶互動&#xff0c;Twitter提供了各種API接口&#xff0c;其中Twitter群發消息API接口尤為重要。AokSend將詳細介紹Twitter群發消息API接口的功能及其應用場景。 Twit…

html+css+js貪吃蛇游戲

貪吃蛇游戲&#x1f579;四個按鈕控制方向&#x1f3ae; 源代碼在圖片后面 點贊??關注&#x1f64f;收藏?? 互粉必回&#x1f64f;&#x1f64f;&#x1f60d;&#x1f60d;&#x1f60d; 源代碼&#x1f4df; <!DOCTYPE html> <html lang"en"&…

15jQuery引入

【一】什么是jQuery jQuery是一個輕量級的、兼容多瀏覽器的JavaScript庫。jQuery內部封裝了原生的js代碼&#xff0c;提高編寫效率 【二】jQuery引入配置 1.● 代碼復制下來放到自己建的txt中&#xff0c;然后把他移入pycharm項目中重構成js文件(注意&#xff1a;只能在當前…

win10使用小技巧三

1. 添加照片查看器支持 目的&#xff1a;為Windows 10添加對特定圖片格式&#xff08;如JPG&#xff09;的支持&#xff0c;使用Windows照片查看器。步驟&#xff1a; 使用WinR打開運行窗口。輸入regedit&#xff0c;點擊確定進入注冊表編輯器。導航至HKEY_CURRENT_MACHINE\SO…

tomcat原理、結構、設計模式

1 what 一種web服務器&#xff0c;運行java servlet、jsp技術&#xff0c;能為java web提供運行環境并通過http協議處理客戶端請求。即tomcat http服務器 servlet容器。同類產品有jetty Web應用&#xff1a;Web應用是指通過Web瀏覽器訪問的應用程序&#xff0c;它使用Web技術…

平臺穩定性里程碑 | Android 15 Beta 3 已發布

作者 / 產品管理副總裁、Android 開發者 Matthew McCullough 從近期發布的 Beta 3 開始&#xff0c;Android 15 達成了平臺穩定性里程碑版本&#xff0c;這意味著開發者 API 和所有面向應用的行為都已是最終版本&#xff0c;您可以查閱它們并將其集成到您的應用中&#xff0c;并…

HTML 標簽列表(功能排序)

HTML 標簽列表(功能排序) HTML(超文本標記語言)是構建網頁的標準語言,它定義了網頁的結構和內容。HTML包含眾多標簽,每個標簽都有其特定的功能和用途。本文將按照功能對HTML標簽進行分類和排序,以幫助您更好地理解和使用這些標簽。 基礎結構標簽 <!DOCTYPE html>…

使用Node.js 框架( Express.js)來創建一個簡單的 API 端點

文章目錄 使用Node.js 框架&#xff08; Express.js&#xff09;來創建一個簡單的 API 端點什么是express安裝修改代碼 express 自動刷新 使用Node.js 框架&#xff08; Express.js&#xff09;來創建一個簡單的 API 端點 什么是express Express 是一個保持最小規模的靈活的 …

系統架構設計師——計算機體系結構

分值占比3-4分 計算機硬件組成 計算機硬件組成主要包括主機、存儲器和輸入/輸出設備。 主機&#xff1a;主機是計算機的核心部分&#xff0c;包括運算器、控制器、主存等組件。運算器負責執行算術和邏輯運算&#xff1b;控制器負責協調和控制計算機的各個部件&#xff1b;主存…

如何看自己電腦的ip地址?這些方法教你搞定

在數字化時代&#xff0c;網絡已經成為我們生活中不可或缺的一部分。對于每一個接入網絡的設備來說&#xff0c;IP地址就像是一個獨特的身份證&#xff0c;它標識著設備在網絡中的位置。對于電腦用戶而言&#xff0c;了解如何查看自己電腦的IP地址&#xff0c;不僅有助于我們更…

Linux設備驅動器 之一 工作(worker)線程

Linux設備驅動器之一 工作線程 數據結構Linux APIs產生工作線程 kthread_create_worker初始化工作 kthread_init_work排隊工作 kthread_queue_work 在Linux中的應用實列SPI 驅動器與imx SPI任務工作線程代碼啟動任務工作線程 工作線程&#xff08;worker&#xff09;Linux管理線…

14-44 劍和詩人18 - 你想怎么應用 RAG 與微調

?????? 要充分發揮 LLM 的潛力&#xff0c;需要在檢索增強生成 (RAG) 和微調之間選擇正確的技術。 讓我們研究一下何時針對 LLM、較小模型和預訓練模型使用 RAG 而不是微調。我們將介紹&#xff1a; LLM 和 RAG 的簡要背景RAG 相對于微調 LLM 的優勢何時針對不同模型大…