Mysql-索引

来源:https://www.cnblogs.com/TuringEmmy/archive/2020/03/17/12514188.html
-Advertisement-
Play Games

先創建表 1.普通索引 是最基本的索引,它沒有任何的限制。有以下幾種創建方式 (1)直接創建索引: 實例: indexName為索引名,mytable表名,username和city為列名,10為首碼長度,即索引在該列從最左字元開始存儲的信息長度,單位位元組 如果是CHAR,VARCHAR類型,首碼長 ...


先創建表

mysql> CREATE TABLE test(
    -> id INT,
    -> username VARCHAR(16),
    -> city VARCHAR(16),
    -> age INT
    -> );

1.普通索引

是最基本的索引,它沒有任何的限制。有以下幾種創建方式

(1)直接創建索引:

CREATE INDEX index_name ON table(column(length))
 實例:
CREATE INDEX test_username ON test (username(10)); -->單列索引

indexName為索引名,mytable表名,username和city為列名,10為首碼長度,即索引在該列從最左字元開始存儲的信息長度,單位位元組

如果是CHAR,VARCHAR類型,首碼長度可以小於欄位實際長度;如果是BLOB和TEXT類型,必須指定 首碼長度,下同。

(2)修改表結構的方式添加索引

ALTER TABLE table_name ADD INDEX index_name ON (column(length))
ALTER TABLE test ADD INDEX test_username(username(10));

此處 indexName 索引名可不寫,系統自動賦名 username ,username_2 ,username_3,...

(3)創建表的時候同時創建索引

mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> INDEX test_username (username(10)) -> );

2.唯一索引

與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種創建方式:
(1)創建唯一索引

CREATE UNIQUE INDEX indexName ON table(column(length))
  實例:

CREATE UNIQUE INDEX test_city ON test(city(10));

(2)修改表結構

ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))
(3)創建表的時候直接指定

mysql> CREATE TABLE test( -> id INT, -> username VARCHAR(16), -> city VARCHAR(16), -> age INT, -> UNIQUE test_username (username(10)) -> );

3.主鍵索引


是一種特殊的唯一索引,一個表只能有一個主鍵,不允許有空值。一般是在建表的時候同時創建主鍵索引:

主鍵索引無需命名,一個表只能有一個主鍵。主鍵索引同時可是唯一索引或者全文索引,但唯一索引或全文索引不能共存在同一索引

(1)修改表結構創建

ALTER TABLE test ADD PRIMARY KEY (id);
(2)創建表的時候直接指定

mysql> CREATE TABLE test(
-> id INT,
-> username VARCHAR(16),
-> city VARCHAR(16),
-> age INT,
-> PRIMARY KEY(id)
-> );
```

4.組合索引

指多個欄位上創建的索引,只有在查詢條件中使用了創建索引時的第一個欄位,索引才會被使用。使用組合索引時遵循最左首碼集合

ALTER TABLE test ADD INDEX test_username_city (username,city);

5.全文索引

主要用來查找文本中的關鍵字,而不是直接與索引中的值相比較。fulltext索引跟其它索引大不相同,它更像是一個搜索引擎,而不是簡單的where語句的參數匹配。fulltext索引配合match against操作使用,而不是一般的where語句加like。它可以在create table,alter table ,create index使用,不過目前只有char、varchar,text 列上可以創建全文索引。值得一提的是,在數據量較大時候,現將數據放入一個沒有全局索引的表中,然後再用CREATE index創建fulltext索引,要比先為一張表建立fulltext然後再將數據寫入的速度快很多。

(1)直接創建

CREATE FULLTEXT INDEX full_username ON test (username);

(2)修改表結構添加全文索引

ALTER TABLE test ADD FULLTEXT INDEX full_city (city);

(3)創建表的時候直接指定

mysql> CREATE TABLE test(
    -> id INT,
    -> username VARCHAR(16),
    -> city VARCHAR(16),
    -> age INT,
    -> FULLTEXT indexName (username(10))
    -> );

6.查看索引

第一種:show create table test;
第二種:SHOW INDEX FROM test \G;

7.刪除索引

DROP INDEX index_name ON table;
ALTER TABLE test DROP PRIMARY KEY;  -->刪除主鍵

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

-Advertisement-
Play Games
更多相關文章
  • vscode 1.42.1 OS: windows 7 x64 1. vscode, cpp extension 本文直接跳過 vscode 安裝, Cpp tools 安裝 2. MinGw 安裝及配置 下載 "MinGW Minimalist GNU for Windows" 安裝過程 安裝所需 ...
  • 一 Kubernetes API Server原理1.1 API Server功能Kubernetes API Server的核心功能是提供Kubernetes各類資源對象(如Pod、RC、Service等)的增、刪、改、查及Watch等HTTP Rest介面,成為集群內各個功能模塊之間數據交互和通... ...
  • (1)RAID0:提升讀寫速度,但數據部備份 (2)RAID1:讀寫速度沒有要求,增加數據安全性 (3)RAID5:至少三塊,增加奇偶校驗位,一塊硬碟損壞,數據還能恢復,數據並沒有備份 (4)RAID10:0和1的結合,至少四個硬碟來組建,繼承了0的高讀寫速度和1的數據安全性 虛擬機添加四塊硬碟。3 ...
  • (1) lsblk 查看硬碟信息 fdisk /dev/sdb 更改寫入磁碟信息 輸入 n 命令新建磁碟分區,輸入p 命令新建主分區sdb1,磁碟大小為3G 輸入 n 命令新建磁碟分區,輸入p 命令新建主分區sdb2,磁碟大小為2G 輸入 n 命令新建磁碟分區,輸入e命令新建擴展分區sdb3,磁碟大 ...
  • 1、首先查看伺服器系統內核,docker環境要求的內核必須在3.10或以上 執行:uname -r 版本為3.10,可安裝docker 2、切到root用戶下,更新yum源,使yum源為最新狀態 執行:yum update 3、安裝docker依賴的軟體包,yum-util 提供yum-config ...
  • ISSI IS62WV51216ALL/IS62WV51216BLL是高速8M位靜態RAM,組織為512K字乘16位。它是使用ISSI的高性能CMOS技術製造的。這種高度可靠的工藝加上創新的電路設計技術,可生產出高性能和低功耗的設備。 當CS1為HIGH(取消選擇)或CS2為LOW(取消選擇)或CS ...
  • 作為 Elasticsearch 的“表結構定義”的 Mapping,你可能需要瞭解下! ...
  • MySQL中定義數據欄位的類型對你資料庫的優化是非常重要的。 MySQL支持多種類型,大致可以分為三類:數值、日期/時間和字元串(字元)類型。 1、數字類型 類型大小範圍(有符號)範圍(無符號)用途 TINYINT 1 位元組 (-128,127) (0,255) 小整數值 SMALLINT 2 位元組 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...