首页 > 数据库 >mysql 索引

mysql 索引

时间:2024-03-11 23:00:27浏览次数:24  
标签:index account name phone 索引 mysql table

索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系的数据结构,通过索引查询可以提高查询的效率。

举个例子:

把一个数据表当做一个图书馆,数据表中的一行数据当做一本书,在没有索引的情况下,想要找某一本书时,几乎需要将整个图书馆的书找一遍。当建立了索引后,就类似于将所有书籍按类型放到指定的书架上。当需要找书时,先找该书类型的书架,再找到该书籍。从而大大提高查询效率。

 

索引的优点:

提高查询效率

索引的缺点:

1、索引需要占用磁盘空间

2、对表数据进行增删改操作时,因为要维护索引,速度会收到影响

 

mysql Innodb存储引擎的索引类型:

主键索引

在建立主键时,数据库会自动为该主键字段建立索引(一个表中只能创建一个主键索引),因此主键索引也不允许为空值。

唯一索引

索引字段的值必须是唯一,允许含有空值,如果是组合索引,多字段之间的组合值也必须是唯一。

普通索引

普通索引也称为单列索引,即一个索引值包含单个列

组合索引

同时将几个字段设置为一个索引

全文索引

全文索引类型为fulltext,可以在字段类型为char、varchart、text列上创建全文索引。在定义索引的列上支持值的全文查找,需配合match against操作使用,而不是一般的where like语句结构,它更像是搜索引擎。在mysql MYISAM存储引擎支持全文索引。

 

索引创建:

创建主键索引:

create table account 
(
id varchar(30) primary key not null ,
name varchar(50) not null ,
phone varchar(11) 
);

查询表索引:

show index from account ;

 

创建唯一索引:

1、直接创建

语法结构:create unique index indexName on table_name(column_name(length))
indexName 自定义索引名称
table_name 表名
column_name 字段名
length 索引长度,在文本类型需要指定索引长度

create unique index name_index on account(name);

2、修改表结果方式添加索引

alter table account add unique index name_index(name) ;

查询表索引

show index from account ;

 删除索引:

语法结构:alter table account drop index indexName ; 
alter table account drop index name_index ;

 

创建普通索引:

1、直接创建

语法结构:create index indexName on table_name(column_name(length))
indexName 自定义索引名称
table_name 表名
column_name 字段名
length 索引长度,在文本类型需要指定索引长度

create index phone_index on account(phone);

2、修改表结果方式添加索引

alter table account add index phone_index(phone) ;

查看表索引

show index from account ;

删除索引:

语法结构:alter table account drop index indexName ; 
alter table account drop index phone_index ;

 

创建组合索引:

1、修改表结果方式添加索引

alter table account add index name_phone_index(name,phone) ;

查看表索引

show index from account ;

注:在对组合索引查询时,都会遵循最左优先,也就是从左往右的优先级,当出现范围查询(>、<、between、like 等)时停止匹配。

 

标签:index,account,name,phone,索引,mysql,table
From: https://www.cnblogs.com/JcHome/p/18067311

相关文章

  • Lucene轻量级搜索引擎,真的太强了!!!Solr 和 ES 都是基于它
    一、基础知识1、Lucene是什么Lucene是一个本地全文搜索引擎,Solr和ElasticSearch都是基于Lucene的封装Lucene适合那种轻量级的全文搜索,我就是服务器资源不够,如果上ES的话会很占用服务器资源,所有就选择了Lucene搜索引擎2、倒排索引原理全文搜索的原理是使用......
  • MySQL数据库表关系详解
    MySQL数据库表关系详解(1)一对一一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面一对一的关系就是一种特殊的多对多的关系,一张表A中的一条记录只能对应另一张表B中的一条记录,另一张表B中的一条记......
  • typeorm mysql 存储base64
    在TypeORM中使用MySQL存储Base64数据时,可以将Base64字符串转换为二进制数据并存储在BLOB字段中。以下是一个简单的例子:首先,确保你的实体有一个适当的列类型,比如blob。import{Entity,PrimaryGeneratedColumn,Column}from'typeorm';@Entity()exportclassMyEntity{@Pr......
  • t05_Mysql_properties驱动配置
    mysql-properties#mysql5驱动com.mysql.jdbc.Driverspring.datasource.username=rootspring.datasource.password=rootspring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&userUnicode=true&characterEncoding=utf-8spring.datasour......
  • k01_mysql
    视图---事务---游标---存储过程---触发器1、视图创建视图--创建一个名为:view_student_info的视图,将student的所有信息放在视图中CREATEVIEWview_student_infoASSELECT*FROMstudent--指定创建视图名中的字段名称(默认创建的视图字段与原表完全相同,但是也可以不同)CRE......
  • 利用JavaRestClient依赖使用java操作索引库
    引入依赖<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.12.1</version></depend......
  • mysql查询几天之前,或某个时间段之间的每天记录数量,不存在补全0
    直接看SQL(非常简单,通俗易懂)biz_requirement_order:业务表名create_time:业务表时间字段,依据这个字段统计数量num:数量返回值别名,可以随意改t表:查询所有符合条件的日期a表:业务表中根据日期分组,查询每天的记录数量最后使用左连接查询,将两个集合合并返回最终结果查询几天之前......
  • 一文学会JDBC实现java和mySQL的数据连接(尚硅谷学习课程代码+笔记+思路总结)
    JDBC是指数据库连接技术,用于java连接mySQL等数据库。本文详细介绍了尚硅谷课程中JDBC的学习内容和补充知识。概述java语言只提供规范接口,存在于java.sql.javax.sql包下,然后数据库软件根据java提供的规范实现具体的驱动代码(jar)jar包是java程序打成的一种压缩包格式,只要导入就......
  • MySQL如果数据存在则更新,不存在则插入
    如果数据存在则更新,不存在则插入,MySQL有duplicate、replaceinto、replace三种方式如何更新数据?insertignoreinto又是如何插入数据的呢?准备表和基础数据测试MySQL版本:8.0.35usetestdb;#droptabletb_student;CREATETABLE`tb_student`(`id`intNOTNULLAUTO_IN......
  • MySQL如何选择时间类型
    日常业务中经常需要记录时间,如订单生成时间、记录保存时间、更新时间等。如何选择MySQL表的时间字段类型呢?一句话,看业务,具体是看业务是否会跨时区。MySQL的日期类型可以用于记录日期的格式有:Datatype实例备注DATE'0000-00-00'日期(年月日)TIME'00:00:00'......