索引字段MySQL学习笔记6:索引 索引字段

文章结束给大家来个程序员笑话:[M]

    索引是创立在表上的,对据数库表中一列或多列的值行进序排的一种结构

    其作用要重在于进步询查的度速,下降据数库系统的能性开销

    通过索引,询查据数不必读完录记的全体信息行进匹配,而是只询查索引列

    索引相当于字典中的音序表,要询查某字时可以在音序表中找到

    然后直接跳转到那一音序所在位置,而不必从字典第一页开始翻,逐字匹配

 

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

 

 

文章结束给大家分享下程序员的一些笑话语录: 看到有人回帖“不顶不是中国人”,他的本意是想让帖子沉了。


你可能感兴趣的:(索引字段MySQL学习笔记6:索引 索引字段)