《索引》




概述

索引,使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。 在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容.


索引杂谈>>>

1.为什么使用索引?

答:数据库对象索引其实与书的目录非常相似,主要是为了提高从表中检索数据的速度。


2.根据索引的存储类型,可以将索引分为哪几个索引?


答:(1)B型树索引【BTREE】

        (2)哈希索引【HASH】


3.什么存储引擎支持B型树索引【BTREE】类型索引?什么存储引擎支持哈希索引【HASH】类型索引?


答:(1)InnoDB和MyISAM存储引擎支持B型树索引【BTREE】类型索引.

                (2)MEMORY存储引擎支持HASH类型索引.


4.MySQL支持的索引有哪些?


答:(1)普通索引
        (2)唯一索引
        (3)全文索引
        (4)单列索引
        (5)多列索引
        (6)空间索引

5.索引创建的利与弊?

答:【利】创建索引可以提高查询速度.
        【弊】过多的创建索引会占据许多的磁盘空间.

6.在MySQl中有几种方式创建索引?分别为哪几种?

答:(1)三种
        (2)创建表时创建索引、在已经存在的表上创建索引、通过SQL语句ALTER TABLE创建索引.

7.为什麽指定索引的长度?

答:因为不同的存储引擎定义了表的最大索引数和最大索引长度.



普通索引创建


语法>>>

1.创建表时创建普通索引

语法:

create table 表名(
属性名 数据类型,
属性名 数据类型,
    ......       ......
index|key   索引名   (属性名1【(长度)】【ASC|DESC】)
   );

2.在已经存在的表上创建普通索引

语法:

create   index   索引名   
on   表名(属性名1【(长度)】【ASC|DESC】);

3.通过SQl语句ALTER TABLE 创建普通索引

语法:

alter   table   表名
add   index|key   索引名   (属性名1【(长度)】【ASC|DESC】);

解析:上述语句中,index 或 key参数用来指定字段为索引,“索引名”参数用来指定所创建的索引名,“属性名1”参数用来指定索引所关联的字段的名称,“长度”用来指定索引的长度,“ASC”参数用来指定为升序排序,“DESC”参数用来指定为降序排序.

【附】通过哪个关键字来校验关于某字段的索引对象是否被启用?语法?

答:explain,语法:
explain select * from 表名 where 添加了索引的某字段名 = 值  \G;


唯一索引创建

1.什么是唯一索引?

答:所谓唯一索引,就是在创建索引时,限制索引的值必须是唯一的.

2.创建索引方式有哪些?

答:(1)自动索引   (2)手动索引

3.什么是自动索引?

答:所谓自动索引,是指在数据表里设置完整性约束时,该表会被系统自动创建索引.

4.什么是手动索引?

答:所谓手动索引,是指手动在表上创建索引. -_-

【附】当设置表中的某个字段设置主键或唯一完整性约束时,系统就会自动创建关联该字段的唯一索引.

【附】校验数据库某表中索引是否创建成功的语法?

答:show   create   table   表名   \G;

语法>>>

1.创建表时创建唯一索引

语法:

create table 表名(
属性名   数据类型,
属性名   数据类型,
   ......         ......
unique   index|key   索引名(属性名1【(长度)】【ASC|DESC】)
);

2.在已经存在的表上创建唯一索引

语法:

create   unique   index   索引名
on   表名(属性名 【(长度)】【ASC|DESC】);

3.通过SQL语句ALTER TABLE创建唯一索引

语法:

alter   table   表名  
add   unique   index|key   索引名   (属性名 【(长度)】【ASC|DESC】);


全文索引创建

1.全文索引主要关联在数据类型为什么的字段上?原因?

答:(1)全文索引主要关联在数据类型为char、varchar、和text的字段上
        (2)原因:以便能够更加快速地查询数据量较大的字符串类型的字段.

2.只能在什么的存储引擎数据库表上创建全文索引?

答:只能在存储引擎为MyISAM的数据库表上创建全文索引.

3.默认情况下,全文索引的搜索执行方式区分大小写吗?

答:不区分大小写.

4.如果全文索引所关联的字段为二进制数据类型,全文索引的搜索执行方式区分大小写吗?

答:区分大小写.

语法>>>

1.创建表时创建全文索引

语法:
create   table   表名
属性名   数据库类型,
属性名   数据库类型,
    ......          ......
fulltext   index|key   索引名(属性名1 【(长度)】【ASC|DESC】);

【附】“长度”参数用来指定索引的长度.

2.在已经存在的表上创建全文索引

语法:

create   fulltext   index   索引名
on   表名(属性名 【(长度)】【ASC|DESC】);
【附】“ASC”参数用来指定为升序排序,“DESC”参数用来指定降序排序.

3.通过SQL语句ALTER TABLE 创建全文索引

语法:

alter   table   表名
add   fulltext   index|key   索引名   (属性名1【(长度)】【ASC|DESC】);


多列索引创建

1.什么是多列索引?

答:所谓多列索引,是指在创建索引时,所关联的字段不是一个字段,而是多个字段.

2.多列索引所遵循的规则?

答:虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用.

语法>>>

1.创建表时创建多列索引

语法:
create table 表名(
属性名   数据类型,
属性名   数据类型,
   ......  ......
index|key   索引名(属性名1   【(长度)】【ASC|DESC】,
 ...... ......
        属性名n   【(长度)】【ASC|DESC】
)
);

2.在已经存在的表上创建多列索引

语法:
create   index   索引名
on   表名(属性名   【(长度)】【ASC|DESC】,
      ...... ......
属性名n   【(长度)】【ASC|DESC】
);

3.通过SQL语句ALTER TABLE创建多列索引

语法:
alter   table   表名
add    index|key   索引名   (属性名   【(长度)】【ASC|DESC】,
          ...... ......
              属性名n   【(长度)】【ASC|DESC】
);

--------------------------------------------------------------------------------
委屈感谢您的阅读  委屈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值