16-MySQL索引

有些字段的數(shù)據(jù)經(jīng)常需要修改,增加,刪除,有些字段的數(shù)據(jù)經(jīng)常需要被查詢,就像不同的人有不同的愛好,我們要投其所好,今天講解的索引就是為了實(shí)現(xiàn)差異化對待以上兩種字段,像預(yù)處理功能一樣,是一個錦上添花的功能

一.索引-概述

索引是為了快速查找某一字段具有特定值的數(shù)據(jù),如果沒有索引,我們查找某一字段的某個數(shù)據(jù),就需要遍歷,有了索引就像有了字典的目錄,雖然增加了占用的存儲空間,但是查詢速度快了
索引適用于經(jīng)常需要查找的字段,且數(shù)據(jù)量比較大的情況下,如果某一字段經(jīng)常要修改,在修改的同時需要動態(tài)修改索引,執(zhí)行效率會慢

1.什么是索引?
索引用于快速找出在某個列中有一特定值的行,不使用索引,MySQL必須從第一條記錄開始讀完整個表,直到找出相關(guān)的行,表越大,查詢數(shù)據(jù)所花費(fèi)的時間就越多,如果表中查詢的列有一個索引,MySQL能夠快速到達(dá)一個位置去搜索數(shù)據(jù)文件,而不必查看所有數(shù)據(jù),那么將會節(jié)省很大一部分時間。
索引就相當(dāng)于字典中前幾頁的目錄(拼音/偏旁部首手), 通過目錄我們就能快速的找到想要的結(jié)果.
如果沒有索引, 就相當(dāng)于字典沒有目錄(拼音/偏旁部首手),那么如果想要查找某條數(shù)據(jù)就必須從第一條開始一條一條的查找
2.MySQL中索引的優(yōu)缺點(diǎn)和使用原則
2.1優(yōu)點(diǎn)
+ 所有的MySql字段都可以用作索引
+ 大大加快數(shù)據(jù)的查詢速度
2.2缺點(diǎn)
+ 索引也需要占空間
+ 對表中的數(shù)據(jù)進(jìn)行增加、刪除、修改時,索引也需要動態(tài)的維護(hù),降低了數(shù)據(jù)的維護(hù)速度
2.3原則
+ 對經(jīng)常用于查詢的字段應(yīng)該創(chuàng)建索引,
+ 數(shù)據(jù)量小的表最好不要使用索引,索引就可能不會產(chǎn)生優(yōu)化效果。
By 極客江南

二.索引-分類

一般來說只要設(shè)置了主鍵字段,就會自動添加主鍵索引,因?yàn)橹麈I具有不會被修改不用維護(hù)的特性,所以我們一般不會用到索引就是這個原因,因?yàn)槲覀円话憧梢酝ㄟ^主鍵查詢

3.索引分類
+ 普通索引:  MySQL中基本索引類型,沒有什么限制,允許在定義索引的列中插入重復(fù)值和空值,純粹為了查詢數(shù)據(jù)更快一點(diǎn)。
+ 唯一索引(唯一鍵): 索引列中的值必須是唯一的,但是允許為空值,
+ 主鍵索引:是一種特殊的唯一索引,不允許有空值。
+ ... ...
By 極客江南

三.索引-使用

image.png

image.png

image.png

image.png

示例一:
create table test1(
id int,
name varchar(20),
index idx_name(name) #創(chuàng)建索引
);
create table test2(
id int,
name varchar(20),
);
create index idx_name on test2(name); #創(chuàng)建索引
create table test3(
id int,
name varchar(20),
);
alter table test3 add index idx_name(name);
示例二:
create table test4(
id int,
name varchar(20),
unique index idx_name(name) #創(chuàng)建索引
);
create table test5(
id int,
name varchar(20),
);
create unique index idx_name on test5(name); #創(chuàng)建索引
create table test6(
id int,
name varchar(20),
);
alter table test6 add unique index idx_name(name);
By 極客江南

四.索引-刪除

image.png

4.刪除索引
drop index idx_name on test6
By 極客江南

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MYSQL 基礎(chǔ)知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 8,071評論 5 115
  • 之前的文章一直在規(guī)避索引的建立去優(yōu)化數(shù)據(jù)庫,不是不想講,而是這個太重要,必須抽出來講。今天我們就來研究下數(shù)據(jù)庫索引...
    sherlock_6981閱讀 3,067評論 0 23
  • 一、MySQL優(yōu)化 MySQL優(yōu)化從哪些方面入手: (1)存儲層(數(shù)據(jù)) 構(gòu)建良好的數(shù)據(jù)結(jié)構(gòu)。可以大大的提升我們S...
    寵辱不驚丶?xì)q月靜好閱讀 2,656評論 1 8
  • 索引是用來快速檢索出具有特定值的記錄。如果沒有索引,數(shù)據(jù)庫就必須從第一條記錄開始進(jìn)行全表掃描,直到找出相關(guān)的行。數(shù)...
    咕泡學(xué)院蓉蓉老師閱讀 532評論 0 2
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 6,017評論 0 9

友情鏈接更多精彩內(nèi)容