《MYSQL教程MySQL筆記之索引的使用》要點:
本文介紹了MYSQL教程MySQL筆記之索引的使用,希望對您有用。如果有疑問,可以聯系我們。
索引是創建在表上的,對數據庫表中一列或多列的值進行排序的一種布局MYSQL必讀
其作用主要在于提高查詢的速度,降低數據庫系統的性能開銷MYSQL必讀
通過索引,查詢數據不必讀完記錄的全部信息進行匹配,而是只查詢索引列MYSQL必讀
索引相當于字典中的音序表,要查詢某字時可以在音序表中找到MYSQL必讀
然后直接跳轉到那一音序所在位置,而不必從字典第一頁開始翻,逐字匹配MYSQL必讀
tips:索引雖能提高查詢速度,但在插入記錄時會依照索引進行排序,因此降低了插入速度MYSQL必讀
? 最好的操作方式是先刪除索引,插入大量記錄后再創立索引MYSQL必讀
索引分類MYSQL必讀
1.普通索引:不附加任何限制條件,可創立在任何數據類型中MYSQL必讀
2.唯一性索引:使用unique參數可以設置索引為唯一性索引,在創建索引時,限制該索引的值必需唯一,主鍵就是一種唯一性索引MYSQL必讀
3.全文索引:使用fulltext參數可以設置索引為全文索引.全文索引只能創立在char、varchar或text類型的字段上.查詢數據量較大的字符串類型字段時,效果明顯.但只有MyISAM存儲引擎支持全文檢索MYSQL必讀
4.單列索引:在表中單個字段上創立的索引,單列索引可以是任何類型,只要保證索引只對應一個一個字段MYSQL必讀
5.多列索引:在表中多個字段上創立的索引,該索引指向創立時對應的多個字段MYSQL必讀
6.空間索引:使用spatial參數可以設置索引為空間索引,空間索引只能建立在空間數據類型上好比geometry,并且不能為空,目前只有MyISAM存儲引擎支持MYSQL必讀
在創立表時創立索引
創立普通索引
MYSQL必讀
代碼如下:
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必讀
代碼如下:
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必讀
創立全文索引
MYSQL必讀
代碼如下:
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必讀
代碼如下:
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必讀
創立多列索引
MYSQL必讀
代碼如下:
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必讀
代碼如下:
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必讀
代碼如下:
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必讀
代碼如下:
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必讀
創立全文索引
MYSQL必讀
代碼如下:
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必讀
代碼如下:
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必讀
代碼如下:
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必讀
代碼如下:
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必讀
代碼如下:
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必讀
更多的是本身的使用經驗MYSQL必讀
最后來看看索引的刪除MYSQL必讀
刪除索引
MYSQL必讀
代碼如下:
mysql> drop index index18_space on example11;
Query OK, 0 rows affected (0.08 sec)
Records: 0? Duplicates: 0? Warnings: 0
這里是剛剛創立的一條索引
其中index18_space是索引名,example11是表名
MYSQL必讀
《MYSQL教程MySQL筆記之索引的使用》是否對您有啟發,歡迎查看更多與《MYSQL教程MySQL筆記之索引的使用》相關教程,學精學透。維易PHP學院為您提供精彩教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/10508.html