程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL筆記之索引的應用

MySQL筆記之索引的應用

編輯:MySQL綜合教程

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是表名

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved