《MYSQL數據庫mysql索引創建與管理筆記》要點:
本文介紹了MYSQL數據庫mysql索引創建與管理筆記,希望對您有用。如果有疑問,可以聯系我們。
導讀:什么是索引索引是創建在表上的,對數據庫表中一列或多列的值進行排序的一種結構.其作用主要在于提高查詢的速度,降低數據庫系統的性能開銷...
MYSQL教程什么是索引
MYSQL教程索引是創建在表上的,對數據庫表中一列或多列的值進行排序的一種結構.
其作用主要在于提高查詢的速度,降低數據庫系統的性能開銷.
通過索引,查詢數據不必讀完記錄的全部信息進行匹配,而是只查詢索引列.
索引相當于字典中的音序表,要查詢某字時可以在音序表中找到.
然后直接跳轉到那一音序所在位置,而不必從字典第一頁開始翻,逐字匹配.
MYSQL教程注意,索引雖能提高查詢速度,但在插入記錄時會依照索引進行排序,因此降低了插入速度.
最好的操作方式是先刪除索引,插入大量記錄后再創建索引.
MYSQL教程mysql索引分類
1,普通索引:不附加任何限制條件,可創建在任何數據類型中
2,唯一性索引:使用unique參數可以設置索引為唯一性索引,在創建索引時,限制該索引的值必須唯一,主鍵就是一種唯一性索引
3,全文索引:使用fulltext參數可以設置索引為全文索引.全文索引只能創建在char、varchar或text類型的字段上.查詢數據量較大的字符串類型字段時,效果明顯.但只有myisam存儲引擎支持全文檢索
4,單列索引:在表中單個字段上創建的索引,單列索引可以是任何類型,只要保證索引只對應一個一個字段
5,多列索引:在表中多個字段上創建的索引,該索引指向創建時對應的多個字段
6,空間索引:使用spatial參數可以設置索引為空間索引,空間索引只能建立在空間數據類型上比如geometry,并且不能為空,目前只有myisam存儲引擎支持
MYSQL教程在創建表時創建索引
1,創建普通索引
?
mysql> create table index1(
??? -> id int,
??? -> name varchar(20),
??? -> sex boolean,
??? -> index(id)
??? -> );
query ok, 0 rows affected (0.11 sec)
MYSQL教程此處在id字段上創建索引,show create table可查看
MYSQL教程2,創建唯一性索引
?
mysql> create table index2(
??? -> id int unique,
??? -> name varchar(20),
??? -> unique index index2_id(id asc)
??? -> );
query ok, 0 rows affected (0.12 sec)
MYSQL教程此處使用id字段創建了一個名為index2_id的索引
這里的id字段可以不設置唯一性約束,但這樣一來索引就沒有作用
MYSQL教程3,創建全文索引
?
mysql> create table index3(
??? -> id int,
??? -> info varchar(20),
??? -> fulltext index index3_info(info)
??? -> )engine=myisam;
query ok, 0 rows affected (0.07 sec)
MYSQL教程要注意創建全文索引時只能使用myisam存儲引擎
MYSQL教程4,創建單列索引
?
mysql> create table index4(
??? -> id int,
??? -> subject varchar(30),
??? -> index index4_st(subject(10))
??? -> );
query ok, 0 rows affected (0.12 sec)
MYSQL教程此處subject字段長度是30,而索引長度則是10
這么做的目的在于提高查詢速度,對于字符型的數據不用查詢全部信息
MYSQL教程5,創建多列索引
?
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)
MYSQL教程可以看出,這里使用了name字段和sex字段創建索引列
MYSQL教程6,創建空間索引
?
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)
MYSQL教程這里需要注意空間space字段不能為空,還有存儲引擎
MYSQL教程在已經存在的表上創建索引
7,創建普通索引
?
mysql> create index index7_id on example0(id);
query ok, 0 rows affected (0.07 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程這里在現有表的id字段上創建了一條名為index7_id的索引
MYSQL教程8,創建唯一性索引
?
mysql> create unique index index8_id on example1(course_id);
query ok, 0 rows affected (0.16 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程此處只需要在index關鍵字前面加上unique即可
至于表中的course_id字段,最要也設置唯一性約束條件
MYSQL教程9,創建全文索引
?
mysql> create fulltext index index9_info on example2(info);
query ok, 0 rows affected (0.07 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程fulltext關鍵字用來設置全文引擎,此處的表必須是myisam存儲引擎
MYSQL教程10,創建單列索引
?
mysql> create index index10_addr on example3(address(4));
query ok, 0 rows affected (0.16 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程此表中address字段的長度是20,這里只查詢4字節,不需要全部查詢
MYSQL教程11,創建多列索引
?
mysql> create index index11_na on example4(name,address);
query ok, 0 rows affected (0.16 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程索引創建好之后,查詢中必須有name字段才能使用
MYSQL教程12,創建空間索引
?
mysql> create spatial index index12_line on example5(space);
query ok, 0 rows affected (0.07 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程這里需要注意存儲引擎是myisam,還有空間數據類型
用alter table語句來創建索引
13,創建普通索引
?
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教程14,創建唯一性索引
?
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教程15,創建全文索引
?
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教程16,創建單列索引
?
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教程17,創建多列索引
?
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教程18,創建空間索引
?
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教程19,刪除索引
?
mysql> drop index index18_space on example11;
query ok, 0 rows affected (0.08 sec)
records: 0? duplicates: 0? warnings: 0
MYSQL教程這里是剛剛創建的一條索引
其中index18_space是索引名,example11是表名
mysql索引類型區別分析
mysql索引的類型與優缺點
mysql索引優化注意問題
mysql索引優化實例解析
mysql索引優化應用實例
Mysql索引分類與優化
MySql索引優化注意要點
Mysql索引優化辦法解析
深入理解MySQL索引與優化
歡迎參與《MYSQL數據庫mysql索引創建與管理筆記》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8900.html