首页 > 其他分享 >索引初识

索引初识

时间:2023-05-13 17:45:33浏览次数:65  
标签:index 创建 create 索引 初识 table id

索引(基础)

一、索引介绍

1.1、前言

在数据库中,执行如下语句时:

select * from emp where id=1000;

mysql 是从第一条记录开始遍历,直至找到 id = 1000 的数据,然而这样查询的效率低,所以 mysql 允许通过建立索引来加快数据表的查询和排序。

1.2、索引概念

数据库的索引类似字典中的拼音,是对数据库表中一列或多列的值进行排序后的一种结构。

作用:就是提高表中数据的查询速度。

1.3、索引分类

  1. 普通索引:

    不加任何参数,直接通过 keyindex 来创建的索引。是 mysql 中的基本索引类型,可创建在任意数据类型中。其值是否唯一、非空,则由字段本身的约束决定。

  2. 唯一索引:

    在定义索引时,加上 unique 即可,该索引所在字段的值必须唯一。但允许有空值。在一张数据表里可以有多个唯一索引

  3. 全文索引

    在定义索引时,加上 fulltext 即可,该索引只能创建在 char、varchar 、text 类型的字段上。

  4. 单列索引

    是在表中单个字段上创建索引,可以为普通索引、唯一索引等,只要保证该索引只对应表中一个字段即可。

  5. 多列索引

    是在表中多个字段上创建索引,但是只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。

  6. 空间索引
    在定义索引时,加上 spatial 即可,该索引只能创建在空间数据类型的字段上。

    mysql 中空间类型索引有 4 中:GEOMETRY、POINT、LINESTRING 和 POLYGON 。但是当使用空间索引时,该字段的约束必须为 not null且数据库的存储引擎为 MyISAM 中使用。

注:主键:primary key 也可作为索引

但本质上看其是一种约束,而索引是一种数据结构,用来提升查询效率

二、创建索引

2.1、创建表时

语法:

create table 表名(
	字段 数据类型 约束
    [unique|fulltext|spatial] index|key [别名] (字段) [ASC|DESC]
 
);

[]:中的值表示可选项

[unique|fulltext|spatial]:分别表示:唯一索引、全文索引、空间索引

[ASC|DESC]:升序、降序

2.1.1、创建普通索引

语法:

create table 表名(
	字段 数据类型 约束
     index|key [别名] (字段) [ASC|DESC]
);

例如这里需要在 t1 表中的 id 创建索引:

create table t1(
	id int,
    name varchar(10),
    age int,
    index(id)
);

通过下述命令查看是否创建成功:

show create table t1\g

通过上图可知,t1 表中成功创建索引。

可再通过下述命令查看是否使用:

explain select * from t1 where id=1\g

通过图中的 possible_keyskey 知 其值都为 id ,表明 id 索引已经存在并开始使用。

2.1.2、创建唯一索引

语法:

create table 表名(
	字段 数据类型 约束
     unique index|key [别名] (字段) [ASC|DESC]
);

例如这里需要在 t2 表中在 id 上创建 unique_id 索引:

create table t2(
	id int,
    name varchar(7),
    score float,
    unique index unique_id (id ASC)
);

2.1.3、创建全文索引

语法:

create table 表名(
	字段 数据类型 约束
     fulltext index|key [别名] (字段) [ASC|DESC]
);

例如这里需要在 t3 表上根据 name 字段来创建全文索引:

create table t3(
	id int,
    name varchar(7),
    score float,
    fulltext index fulltext_name (name)
);

2.1.4、创建单列索引

语法:

create table 表名(
	字段 数据类型 约束
     index|key [别名] (字段1,字段2......) [ASC|DESC]
);

例如需要在 t4 表上根据 name 创建索引

create table t4(
	id int,
    name varchar(7),
    score float,
    index single_name (name(7))
);

2.1.5、创建多列索引

语法:

create table 表名(
	字段 数据类型 约束
     index|key [别名] (字段1,字段2......) [ASC|DESC]
);

例如需要在 t5 表上创建多列索引:

create table t5(
	id int,
    name varchar(7),
    score float,
    index multi (id,name(7))
);

注意:只有当在查询条件中使用索引字段的第一个字段时,才会有效。验证如下:

这里通过 id 来查询:

explain select * from t5 where id=1\g

当通过 name 来查询时:

explain select * from t5 where name='张三'\g

这时,发现通过 name 查询的结果中:possible_keys | key 皆为 null,表明索引并为使用。

2.1.6、创建空间索引

语法:

create table 表名(
	字段 数据类型 约束
     spatial index|key [别名] (字段1,字段2......) [ASC|DESC]
);

例如需要在 t6 表上创建空间索引:

create table t6(
	id int,
    space geometry not null,
    spatial index sp (space)
);

2.2、创表后

1、通过 create 创建

语法:

create [unique|fulltext|spatial] index 索引名 on 表明 (字段名[长度]) [asc|desc];

这里以创建唯一索引为例:

需要在 t7 表上根据 bookid 创建唯一索引

create unique index unique_id on book(bookid);

其余类似。

2、通过 alter 创建

语法:

alter table 表名 add [unique|fulltext|spatial] index 索引名 (字段名[长度]) [asc|desc];

这里以创建唯一索引为例:

需要在 t7 表上根据 bookid 创建唯一索引

alter table book add unique index unique_id (bokid);

其余类似。

三、删除索引

由于索引会占用一定的磁盘空间,所以为了避免影响数据库性能,需删除不使用的索引。

3.1、alter

语法:

alter table 表名 drop index 索引名

这里以删除唯一索引为例:

需要在 t7 表上根据 bookid 删除唯一索引:

alter table book drop index unique_id;

其余类似。

3.2、drop

语法:

drop index 索引名 on 表名;

这里以删除唯一索引为例:

需要在 t7 表上根据 bookid 删除唯一索引:

drop index unique_id on book;

其余类似。

标签:index,创建,create,索引,初识,table,id
From: https://www.cnblogs.com/xiarongblogs/p/17397801.html

相关文章

  • 新版《谷歌搜索引擎优化初学者指南》
    站长朋友们,我们非常高兴地宣布,新版《谷歌搜索引擎优化初学者指南》已经发布了,欢迎您下载阅读! 简体中文版:http://www.google.com/intl/zh-CN/webmasters/docs/search-engine-optimization-starter-guide-zh-cn.pdf 繁体中文版:......
  • 前端 Website 的 sitemap.xml 文件和搜索引擎优化
    前端Website的sitemap.xml文件是一个XML格式的文件,其中包含了网站中所有页面的链接,这些页面可以是HTML页面、博客文章、产品页面、分类页面等等。Sitemap文件的作用是向搜索引擎提供关于网站的信息,帮助搜索引擎更好地索引网站内容,提高网站在搜索结果中的排名。Sitemap.xml......
  • 文件相关信息、文件索引信息、链接信息、系统时间、机器克隆、定时任务、paramiko模块
    目录今日内容概要今日内容详细文件相关信息文件索引信息链接信息系统时间机器克隆定时任务paramiko模块公钥私钥paramiko其他操作代码封装面试题回忆etc目录配置相关/etc/profile 环境变量文件/etc/motd 开机欢迎界面usr目录程序相关四种安装软件的方式 1.yum安装 ......
  • day02Python的初识
    第二节编程语言与Python介绍【一】引言基于上一节所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序。【二】编程语言分类【1】机器语言(1.1)什么是机器语言机器语言是站在计算......
  • 学习日记——初识CSS
    1.初识CSS①定义:级联样式表,用于网页的修饰②应用:主要应用于网页的美化工作③发展:1996CSS1.0→2004CSS2.0→2010CSS3.0④优势:内容和表现分离(HTML和Css分离)网页的表现统一,容易修改丰富的样式,使得页面的布局更加灵活减少网页的代码量,增加网页的浏览速度,节省网络带宽运用独立于页......
  • VMware Aria Suite 8.12 - 云管理解决方案 (下载索引)
    VMwareAriaSuite8.12-云管理解决方案(下载索引)请访问原文链接:https://sysin.org/blog/vmware-aria-suite/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org云管理套包VMwareAriaSuite(以前称为vRealizeSuite)和vCloudSuiteVMwareAriaSuite(vRealizeSu......
  • 2020-05-21:es底层读写原理?倒排索引原理?
    es不熟悉,答案仅供参考:es写数据过程1、客户端选择一个node发送请求过去,这个node就是coordinatingnode(协调节点)2、coordinatingnode对document进行路由,将请求转发给对应的node(有primaryshard)3、实际的node上的primaryshard处理请求,然后将数据同步到replicanode。4、coord......
  • 通过空间占用和执行计划了解SQL Server的行存储索引
    1索引介绍索引是一种帮助查询语句能够快速定位到数据的一种技术。索引的存储方式有行存储索引、列存储索引和内存优化三种存储方式:行存储索引,使用B+树结构,行存储指的是数据存储格式为堆、聚集索引和内存优化表的表,用于OLTP场景。行存储索引按顺序排列的值列表,每个值都有指向其......
  • 初识结构体
    结构体使得c语言有能力描述复杂类型比如:描述一个人的具体细节,例如年龄,身高,性别 struct是c语言中的结构体首先先创造一个新的类型,设定好想要描述这个类型的成员变量用这个类型创建一个学生叫s,里面分别放入他的姓名,年龄,成绩,(结构体的创建和初始化)打印出这个学生的姓名,年龄,成......
  • 索引
    在宏基因组学的量化分析中,需要对测序数据进行拼接和比对等处理,以了解基因组中代表微生物种群结构的基因序列。而索引则是这一过程中十分重要的一步。索引是将特定的序列信息提取出来,存储成为容易查找和访问的形式。在宏基因组分析中,索引可以理解为对目标基因组或数据集的细分和分......