数据库索引怎么建立呢?数据库索引有何作用?

XIAO 2020-05-28 20:43:08 java常见问答 6994

如果你也曾了解过数据库的知识,应该会对数据库索引有所理解吧,所以你还记得数据库索引是怎么建立的吗?数据库索引一般有什么作用呢?

索引是快速搜索数据的关键。例如,数据MySQL索引的建立对于MySQL的高效运行也是很重要的。下面就来介绍几种常见的MySQL索引的类型。

我们在数据库表中,一旦对字段建立了索引就可以大大提高查询的速度了。就比如说我们创建了一个mytable表:

CREATE TABLE mytable( IDINTNOT NULL, username VARCHAR(16) NOT NULL);

我们现在就随机地向里面插入10000条记录,其中有一条就是:1111, admin。

我们可以在查找username="admin"的记录的:

SELECT * FROMmytable WHERE

username='admin';

的时侯,如果在username上已经建立起了索引,MySQL其实就无须再有任何的扫描了,即准确地可找到该记录了。如果相反,MySQL则会扫描所有记录,即要查询10000条记录。

索引分为单列索引和组合索引。单列索引,即一个索引只是包含单个列,一个表是可以有多个单列索引的,但注意这不是组合索引。组合索引,就是一个索引然后包含了多个列。

我们再来看看MySQL索引类型包括哪些?

首先是普通索引:这是最基本的索引,因为它没有任何的限制。它有以下几种创建方式:

创建索引:

CREATE INDEXindexName ON mytable(username(length));

如果是CHAR,VARCHAR的类型,length就可以小于字段实际长度了;如果是BLOB和TEXT类型,就必须指定length,下面也是一样的。

修改表结构:

ALTERmytable ADDINDEX[indexName] ON (username(length))

创建表的时候我们可以直接这样指定:

CREATE TABLE mytable( IDINTNOT NULL, username VARCHAR(16) NOT NULL,

INDEX [indexName] (username(length)) ); 

删除索引的语法如下:

DROP INDEX [indexName] ON mytable;

唯一索引:它与之前的普通索引类似,不同之处就是:索引列的值必须是唯一的,也允许有空值。如果是组合索引的话,就列值的组合必须是唯一的。它有以下几种创建方式:

可以这样创建索引:

CREATE UNIQUE INDEX indexName ON mytable(username(length))

可以这样修改表结构:

ALTERmytable ADDUNIQUE [indexName] ON (username(length))

在创建表的时候外我们可以直接这样指定:

CREATE TABLE mytable( IDINTNOT NULL, username VARCHAR(16) NOT NULL,

UNIQUE [indexName] (username(length)) );

所谓主键索引其实它就是一种特殊的唯一索引,也是不允许有空值存在的。一般是在建表的时候同时创建主键索引:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL,

PRIMARY KEY(ID) ); 

当然也可以用 ALTER命令。但是要记住:一个表是只能有一个主键的。

组合索引:为了鲜明地对比单列索引和组合索引,我们可以为表添加多个字段:

CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL,

city VARCHAR(50) NOT NULL, age INT NOT NULL );

为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:

ALTER TABLE mytable ADDINDEX name_city_age (name(10),city,age);

建表时,usernname长度为 16,这里用10。这就因为一般情况下名字的长度是不会超过10的,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。

好了,以上就是本篇文章的所有内容了,还想了解更多java常见问答信息,记得来关注本站消息哦。

推荐阅读:

数据库索引原理有哪些?简述

数据库系统由哪几部分组成 ?数据库系统概论

数据库索引是什么意思?特点有哪些?