最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

mysql碼農(nóng)筆記之索引的使用

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 19:57:16
文檔

mysql碼農(nóng)筆記之索引的使用

mysql碼農(nóng)筆記之索引的使用: 索引是創(chuàng)建在表上的,對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),其作用主要在于提高查詢的速度,降低數(shù)據(jù)庫系統(tǒng)的性能開銷 通過索引,查詢數(shù)據(jù)不必讀完記錄的全部信息進行匹配,而是只查詢索引列 索引相當于字典中的音序表,要查詢某字時可以在音序表
推薦度:
導(dǎo)讀mysql碼農(nóng)筆記之索引的使用: 索引是創(chuàng)建在表上的,對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),其作用主要在于提高查詢的速度,降低數(shù)據(jù)庫系統(tǒng)的性能開銷 通過索引,查詢數(shù)據(jù)不必讀完記錄的全部信息進行匹配,而是只查詢索引列 索引相當于字典中的音序表,要查詢某字時可以在音序表

  1. 索引是創(chuàng)建在表上的,對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),其作用主要在于提高查詢的速度,降低數(shù)據(jù)庫系統(tǒng)的性能開銷
  2. 通過索引,查詢數(shù)據(jù)不必讀完記錄的全部信息進行匹配,而是只查詢索引列
  3. 索引相當于字典中的音序表,要查詢某字時可以在音序表中找到,然后直接跳轉(zhuǎn)到那一音序所在位置,而不必從字典第一頁開始翻,逐字匹配
  4. 索引雖能提高查詢速度,但在插入記錄時會按照索引進行排序,因此降低了插入速度,最好的操作方式是先刪除索引,插入大量記錄后再創(chuàng)建索引


索引分類

1.普通索引:不附加任何限制條件,可創(chuàng)建在任何數(shù)據(jù)類型中

2.唯一性索引:使用unique參數(shù)可以設(shè)置索引為唯一性索引,在創(chuàng)建索引時,限制該索引的值必須唯一,主鍵就是一種唯一性索引

3.全文索引:使用fulltext參數(shù)可以設(shè)置索引為全文索引。全文索引只能創(chuàng)建在char、varchar或text類型的字段上。查詢數(shù)據(jù)量較大的字符串類型字段時,效果明顯。但只有MyISAM存儲引擎支持全文檢索

4.單列索引:在表中單個字段上創(chuàng)建的索引,單列索引可以是任何類型,只要保證索引只對應(yīng)一個一個字段

5.多列索引:在表中多個字段上創(chuàng)建的索引,該索引指向創(chuàng)建時對應(yīng)的多個字段

6.空間索引:使用spatial參數(shù)可以設(shè)置索引為空間索引,空間索引只能建立在空間數(shù)據(jù)類型上比如geometry,并且不能為空,目前只有MyISAM存儲引擎支持

(1)在創(chuàng)建表時創(chuàng)建索引

創(chuàng)建普通索引

mysql> create table index1(
 -> id int,
 -> name varchar(20),
 -> sex boolean,
 -> index(id)
 -> );
Query OK, 0 rows affected (0.11 sec)

此處在id字段上創(chuàng)建索引,show create table可查看

創(chuàng)建唯一性索引

mysql> create table index2(
 -> id int unique,
 -> name varchar(20),
 -> unique index index2_id(id ASC)
 -> );
Query OK, 0 rows affected (0.12 sec)

此處使用id字段創(chuàng)建了一個名為index2_id的索引

這里的id字段可以不設(shè)置唯一性約束,但這樣一來索引就沒有作用

創(chuàng)建全文索引

mysql> create table index3(
 -> id int,
 -> info varchar(20),
 -> fulltext index index3_info(info)
 -> )engine=MyISAM;
Query OK, 0 rows affected (0.07 sec)

要注意創(chuàng)建全文索引時只能使用MyISAM存儲引擎

創(chuàng)建單列索引

mysql> create table index4(
 -> id int,
 -> subject varchar(30),
 -> index index4_st(subject(10))
 -> );
Query OK, 0 rows affected (0.12 sec)

此處subject字段長度是30,而索引長度則是10

這么做的目的在于提高查詢速度,對于字符型的數(shù)據(jù)不用查詢?nèi)啃畔?/p>

創(chuàng)建多列索引

mysql> create table index5(
 -> id int,
 -> name varchar(20),
 -> sex char(4),
 -> index index5_ns(name,sex)
 -> );
Query OK, 0 rows affected (0.10 sec)

可以看出,這里使用了name字段和sex字段創(chuàng)建索引列

創(chuàng)建空間索引

mysql> create table index6(
 -> id int,
 -> space geometry not null,
 -> spatial index index6_sp(space)
 -> )engine=MyISAM;
Query OK, 0 rows affected (0.07 sec)

這里需要注意空間space字段不能為空,還有存儲引擎

(2)在已經(jīng)存在的表上創(chuàng)建索引

創(chuàng)建普通索引

mysql> create index index7_id on example0(id);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0

這里在現(xiàn)有表的id字段上創(chuàng)建了一條名為index7_id的索引

創(chuàng)建唯一性索引

mysql> create unique index index8_id on example1(course_id);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

此處只需要在index關(guān)鍵字前面加上unique即可

至于表中的course_id字段,最要也設(shè)置唯一性約束條件

創(chuàng)建全文索引

mysql> create fulltext index index9_info on example2(info);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0

fulltext關(guān)鍵字用來設(shè)置全文引擎,此處的表必須是MyISAM存儲引擎

創(chuàng)建單列索引

mysql> create index index10_addr on example3(address(4));
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

此表中address字段的長度是20,這里只查詢4字節(jié),不需要全部查詢

創(chuàng)建多列索引

mysql> create index index11_na on example4(name,address);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

索引創(chuàng)建好之后,查詢中必須有name字段才能使用

創(chuàng)建空間索引

mysql> create spatial index index12_line on example5(space);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0

這里需要注意存儲引擎是MyISAM,還有空間數(shù)據(jù)類型

(3)用alter table語句來創(chuàng)建索引

創(chuàng)建普通索引

mysql> alter table example6 add index index13_n(name(20));
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

創(chuàng)建唯一性索引

mysql> alter table example8 add fulltext index index15_info(info);
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0

創(chuàng)建單列索引

mysql> alter table example9 add index index16_addr(address(4));
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

創(chuàng)建多列索引

mysql> alter table example10 add index index17_in(id,name);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

創(chuàng)建空間索引

mysql> alter table example11 add spatial index index18_space(space);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0

到此,三種操作方式,每種索引類別的建立就都列舉了

對于索引,重要的是理解索引的概念,明白索引的種類

更多的是自己的使用經(jīng)驗

最后來看看索引的刪除

(4)刪除索引

mysql> drop index index18_space on example11;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0

這里是剛剛創(chuàng)建的一條索引

其中index18_space是索引名,example11是表名

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

mysql碼農(nóng)筆記之索引的使用

mysql碼農(nóng)筆記之索引的使用: 索引是創(chuàng)建在表上的,對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),其作用主要在于提高查詢的速度,降低數(shù)據(jù)庫系統(tǒng)的性能開銷 通過索引,查詢數(shù)據(jù)不必讀完記錄的全部信息進行匹配,而是只查詢索引列 索引相當于字典中的音序表,要查詢某字時可以在音序表
推薦度:
標簽: 使用 筆記 程序員
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top