【後端面經】MySQL主鍵、唯一索引、聯合索引的區別和作用

来源:https://www.cnblogs.com/CrazyPixel/archive/2023/06/18/17488866.html
-Advertisement-
Play Games

[TOC](MySQL主鍵、唯一索引、聯合索引的區別和作用) # 0. 簡介 索引是一類特殊的`文件`,用來存儲檢索信息,使資料庫查找更加快速。 # 1. 主鍵 主鍵是一類特殊的唯一索引,選擇某一列元素作為主鍵,用來表示每一行元素的特殊性,其特點如下 - 在一個數據表中只有一個主鍵; - 主鍵不能為 ...


目錄

0. 簡介

索引是一類特殊的文件,用來存儲檢索信息,使資料庫查找更加快速。

1. 主鍵

主鍵是一類特殊的唯一索引,選擇某一列元素作為主鍵,用來表示每一行元素的特殊性,其特點如下

  • 在一個數據表中只有一個主鍵;
  • 主鍵不能為空(null);
  • 主鍵的列數據不能重覆(唯一索引的特點)。

2. 唯一索引

唯一索引是資料庫中的一個索引類型,用來保證某列元素的數據唯一性,其特點如下:

  • 一個數據表中可以有多個唯一索引;
  • 唯一索引可以為空(null);
  • 唯一索引的列數據不能重覆。

3. 聯合索引

當一個索引由多個列組成時,稱為聯合索引,主要用於快速查找某一特殊元素,其特點如下:

  • 列順序很重要:ABC和CBA是兩類不同的聯合索引;
  • 一個數據表中可以有多個聯合索引。

4. 索引對資料庫操作的影響

索引的使用目的是為了加快查找數據的速度。

  • 讀(查找數據)
    通過檢索索引文件而不是整個資料庫文件,能夠加快讀數據的速度。
  • 寫(更新數據、增刪改)
    索引文件是獨立於數據文件的,因此在寫數據的時候,需要同時更新索引文件和數據文件,因此會降低寫數據的速度。

5. 其他索引

5.1 普通索引

和一般索引相比,允許列數據重覆,作用是加快數據訪問速度。特點如下:

  • 一個數據表中可以有多個唯一索引;
  • 普通索引可以為空(null);
  • 普通索引的列數據能重覆。

5.2 全文索引

用來加快對大文本數據關鍵字的檢索,MySQL5.6之後InnoDB也支持該索引。

5.3 首碼索引

僅針對字元串類型的數據,只索引字元串的前幾個字元,而不是整個字元串。因此索引文件更小。

6. 總結

對上述的幾種索引的特點對比如下所示:

7. 參考資料

參考博客-1
參考博客-2


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 前言 使用 ABP vNext(下文簡稱 ABP)時,通常都是從 cli 開始新建模板,從一個空項目開始。對已經存續的項目來說,現有的數據,特別是用戶等核心數據需要進行遷移。 老的項目,隨著規模越來越大,每次修改都需要更改非常多地方,最重要的是,共用資料庫使得維護起來需要小心翼翼。為了後續維護 ...
  • 經過前幾篇文章的講解,初步瞭解ASP.NET Core MVC項目創建,啟動運行,以及命名約定,創建控制器,視圖,模型,接收參數,傳遞數據ViewData,ViewBag,路由,頁面佈局,wwwroot和客戶端庫,Razor語法,EnityFrameworkCore與資料庫,HttpContext,... ...
  • # 個人博客文章歸檔實現📑 # 前言 隨著博客的文章越來越多,那麼歸檔就顯得尤為重要,然後最近也是沒什麼課,加緊更新一下博客,之前也是更新了評論、留言板。 然後博客是使用的前後的不分離的項目,數據返回一般都是用的.NET的強類型數據返回,也會用到分佈視圖。 重點是一段sql查詢困惱我許久,在後端接 ...
  • 大家好,我是 god23bin。歡迎來到《一分鐘學一個 Linux 命令》系列,每天只需一分鐘,記住一個 Linux 命令不成問題。今天要說的是 ps 命令。 ...
  • MySQL作為一個流行的開源關係型資料庫管理系統,它可以運行在多種平臺上,支持多種存儲引擎,提供了靈活的數據操作和管理功能。 ...
  • Mysql8社區版日誌審計插件 過去從Mysql官方自帶general.log日誌的相比其他插件性能是最差的,我們考慮參考行業中較好的插件是MariaDB Audit Plugin, 可惜並不相容mysql 5.7與mysql 8.0以上版本。亞馬遜RDS for MySQL的開發團隊已經folk了 ...
  • ## 1.maven引入相關依賴 ~~~xml org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-pool2 2.11.1 com.fasterxml.jackson.core jac ...
  • 近日,極限數據 (北京) 科技有限公司(以下簡稱:極限科技)旗下的軟體 INFINI Easysearch 搜索引擎軟體 V1.0 通過統信 UOS 伺服器操作系統 V20 認證。 此次相容適配基於統信 UOS 伺服器操作系統 V20,聯合國產 CPU:海光 5000、海光 7000、兆芯 KH-3 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...