MySQL---索引

来源:https://www.cnblogs.com/horror/archive/2018/08/24/9532405.html
-Advertisement-
Play Games

索引,是資料庫中專門用於幫助用戶快速查詢數據的一種數據結構。類似於字典中的目錄,查找字典內容時可以根據目錄查找到數據的存放位置,然後直接獲取即可。 以 B-tree 形式存儲: MySQL中常見索引有: 普通索引 唯一索引 主鍵索引 組合索引 1、普通索引 普通索引僅有一個功能:加速查詢 1 cre ...


索引,是資料庫中專門用於幫助用戶快速查詢數據的一種數據結構。類似於字典中的目錄,查找字典內容時可以根據目錄查找到數據的存放位置,然後直接獲取即可。

以 B-tree 形式存儲

1                     30
2  
3         10                        40
4  
5    5         15            35             66
6  
7 1   6     11    19      21      39     55     100

MySQL中常見索引有:

  • 普通索引
  • 唯一索引
  • 主鍵索引
  • 組合索引

1、普通索引

普通索引僅有一個功能:加速查詢

1 create table in1(
2     nid int not null auto_increment primary key,
3     name varchar(32) not null,
4     email varchar(64) not null,
5     extra text,
6     index ix_name (name)
7 )
創建表 + 索引
1 create index index_name on table_name(column_name)
創建索引
1 drop index_name on table_name;
刪除索引
1 show index from table_name;
查看索引

註意:對於創建索引時如果是BLOB 和 TEXT 類型,必須指定length。

1 create index ix_extra on in1(extra(32));
View Code

2、唯一索引

唯一索引有兩個功能:加速查詢 和 唯一約束(可含null)

1 create table in1(
2     nid int not null auto_increment primary key,
3     name varchar(32) not null,
4     email varchar(64) not null,
5     extra text,
6     unique ix_name (name)
7 )
創建表 + 唯一索引
1 create unique index 索引名 on 表名(列名);
創建唯一索引
1 drop unique index 索引名 on 表名;
刪除唯一索引

3、主鍵索引

主鍵有兩個功能:加速查詢 和 唯一約束(不可含null)

 1 create table in1(
 2     nid int not null auto_increment primary key,
 3     name varchar(32) not null,
 4     email varchar(64) not null,
 5     extra text,
 6     index ix_name (name)
 7 )
 8 
 9 OR
10 
11 create table in1(
12     nid int not null auto_increment,
13     name varchar(32) not null,
14     email varchar(64) not null,
15     extra text,
16     primary key(ni1),
17     index ix_name (name)
18 )
創建表 + 創建主鍵
1 alter table 表名 add primary key(列名);
創建主鍵
1 alter table 表名 drop primary key;
2 alter table 表名  modify  列名 int, drop primary key;
刪除主鍵

4、組合索引

組合索引是將n個列組合成一個索引

其應用場景為:頻繁的同時使用n列來進行查詢,如:where n1 = 'alex' and n2 = 666。

1 create table in3(
2     nid int not null auto_increment primary key,
3     name varchar(32) not null,
4     email varchar(64) not null,
5     extra text
6 )
創建表
1 create index ix_name_email on in3(name,email);
創建組合索引

如上創建組合索引之後,查詢(最左首碼):

  • name and email  -- 使用索引
  • name                 -- 使用索引
  • email                 -- 不使用索引

註意:對於同時搜索n個條件時,組合索引的性能好於多個單一索引合併。

補充

1、覆蓋索引

select * from tb where nid=1;
# 先去索引中找
# 再去數據中找


select nid from tb where nid<10;
# 先去索引中找(只需要在索引表中就能獲取到數據)
# 該情況應用上索引,並且不用去數據表中操作,即覆蓋索引

2、合併索引(根據業務需求決定)

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、信息安全運維服務 信息安全運維服務是一種信息安全保障服務,面向信息系統使用單位,從客戶IT技術部門的角度出發。是一種外包托管服務。 信息安全運維服務目的是提高用戶網路運行質量、提升網路支撐能力、提高網路管理、安全管理水平、保證業務及網路的穩定和持續運行。 信息安全運維服務包含安全設備運維、網路設 ...
  • 原文地址:http://ilikedo.iteye.com/blog/1554822 linux下安裝Oracle 一般都會修改/etc/security/limits.conf這個文件,但是這裡面的具體含義未必每個人都會,剛開始我也不是很清除,只知道要修改,每次安裝按照文檔配置就可以了。今天看到一 ...
  • 如果我們使用**war** 包進行部署項目的時候,需要把包放進Tomcat的目錄下,為了使我們的服務能夠在伺服器重啟的時候自動啟動起來,我們需要把Tomcat設置成自起服務。## 配置 Tomcat 服務新建服務腳本```[root@localhost ~]# vim /etc/init.d/tom... ...
  • 這裡使用樹莓派來操作sg90的舵機。先看一下這個舵機的樣子: 這就是傳說中的SG90舵機啦,轉角是0~180. SG90舵機接線: SG90舵機有三條線:黃線,紅線和灰(還是黑?)線。 這三條線的作用是:紅線VCC,灰線GND,黃線控制線。所以我們這裡主要是操控黃線來控制舵機。 然後這裡有個非常非常 ...
  • 一、通過命令行查找埠被誰占用 1、window+R組合鍵,調出命令視窗 2、輸入命令:netstat -ano,列出所有埠的情況。在列表中我們觀察被占用的埠 3、查看被占用埠對應的PID,輸入命令:netstat -aon | findstr 9090,回車,記錄最後一位數字,即PID,這裡 ...
  • 1、環境 VMware 14.1.1 虛擬系統:Windows Server 2008 32位 2、解決辦法 打開虛擬網路編輯器 有紅框中的提示出現時,就點擊更改設置 點擊橋接模式,在VMnet信息中選擇橋接到的網卡,選擇主機當前連接到網路使用的網卡即可 ...
  • 1.ls [選項] [目錄名 | 列出相關目錄下的所有目錄和文件 -a 列出包括.a開頭的隱藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的詳細信息 -c 根據ctime排序顯示 -t 根據文件修改時間排序 color[=WHEN] 用色彩辨別文件類型 WHEN 可以是'n ...
  • 首先來看一下這個測距模塊長什麼樣子: 就是HC-SR04模塊。 這個模塊有四個引腳,分別是Vcc(高電平),GND(低電平),Trig(觸發測距)以及Echo(返回測距結果)。 那麼這個模塊怎麼使用呢,資料上的說明是這樣的: 首先給出時序圖: 從上面的步驟可以看出,我們只需要測量Echo腳為高電平的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...