MySQL筆記之索引的應用。本站提示廣大學習愛好者:(MySQL筆記之索引的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL筆記之索引的應用正文
索引是創立在表上的,對數據庫表中一列或多列的值停止排序的一種構造
其感化重要在於進步查詢的速度,下降數據庫體系的機能開支
經由過程索引,查詢數據不用讀完記載的全體信息停止婚配,而是只查詢索引列
索引相當於字典中的音序表,要查詢某字時可以在音序表中找到
然後直接跳轉到那一音序地點地位,而不用從字典第一頁開端翻,逐字婚配
tips:索引雖能進步查詢速度,但在拔出記載時會依照索引停止排序,是以下降了拔出速度
最好的操作方法是先刪除索引,拔出年夜量記載後再創立索引
索引分類
1.通俗索引:不附加任何限制前提,可創立在任何數據類型中
2.獨一性索引:應用unique參數可以設置索引為獨一性索引,在創立索引時,限制該索引的值必需獨一,主鍵就是一種獨一性索引
3.全文索引:應用fulltext參數可以設置索引為全文索引。全文索引只能創立在char、varchar或text類型的字段上。查詢數據量較年夜的字符串類型字段時,後果顯著。但只要MyISAM存儲引擎支撐全文檢索
4.單列索引:在表中單個字段上創立的索引,單列索引可所以任何類型,只需包管索引只對應一個一個字段
5.多列索引:在表中多個字段上創立的索引,該索引指向創立時對應的多個字段
6.空間索引:應用spatial參數可以設置索引為空間索引,空間索引只能樹立在空間數據類型上好比geometry,而且不克不及為空,今朝只要MyISAM存儲引擎支撐
在創立表時創立索引
創立通俗索引
mysql> create table index1(
-> id int,
-> name varchar(20),
-> sex boolean,
-> index(id)
-> );
Query OK, 0 rows affected (0.11 sec)
此處在id字段上創立索引,show create table可檢查
創立獨一性索引
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字段創立了一個名為index2_id的索引
這裡的id字段可以不設置獨一性束縛,但如許一來索引就沒有感化
創立全文索引
mysql> create table index3(
-> id int,
-> info varchar(20),
-> fulltext index index3_info(info)
-> )engine=MyISAM;
Query OK, 0 rows affected (0.07 sec)
要留意創立全文索引時只能應用MyISAM存儲引擎
創立單列索引
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
這麼做的目標在於進步查詢速度,關於字符型的數據不消查詢全體信息
創立多列索引
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字段創立索引列
創立空間索引
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字段不克不及為空,還有存儲引擎
在曾經存在的表上創立索引
創立通俗索引
mysql> create index index7_id on example0(id);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
這裡在現有表的id字段上創立了一條名為index7_id的索引
創立獨一性索引
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症結字後面加上unique便可
至於表中的course_id字段,最要也設置獨一性束縛前提
創立全文索引
mysql> create fulltext index index9_info on example2(info);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
fulltext症結字用來設置全文引擎,此處的表必需是MyISAM存儲引擎
創立單列索引
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字節,不須要全體查詢
創立多列索引
mysql> create index index11_na on example4(name,address);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
索引創立好以後,查詢中必需有name字段能力應用
創立空間索引
mysql> create spatial index index12_line on example5(space);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
這裡須要留意存儲引擎是MyISAM,還有空間數據類型
用alter table語句來創立索引
創立通俗索引
mysql> alter table example6 add index index13_n(name(20));
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
創立獨一性索引
mysql> alter table example7 add unique index index14_id(id);
Query OK, 0 rows affected (0.20 sec)
Records: 0 Duplicates: 0 Warnings: 0
創立全文索引
mysql> alter table example8 add fulltext index index15_info(info);
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
創立單列索引
mysql> alter table example9 add index index16_addr(address(4));
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
創立多列索引
mysql> alter table example10 add index index17_in(id,name);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
創立空間索引
mysql> alter table example11 add spatial index index18_space(space);
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
到此,三種操作方法,每種索引種別的樹立就都羅列了
關於索引,主要的是懂得索引的概念,明確索引的品種
更多的是本身的應用經歷
最初來看看索引的刪除
刪除索引
mysql> drop index index18_space on example11;
Query OK, 0 rows affected (0.08 sec)
Records: 0 Duplicates: 0 Warnings: 0
這裡是方才創立的一條索引
個中index18_space是索引名,example11是表名