iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL索引的创建与使用
  • 524
分享到

MySQL索引的创建与使用

mysql数据库java 2023-10-18 17:10:34 524人浏览 八月长安
摘要

索引的分类   在学习如何创建索引之前,先了解一下索引的分类   Mysql中分为:普通索引,唯一索引,主键索引,组合索引,和全文索引。 index_name :索引名 table:表名 colu

索引的分类

  在学习如何创建索引之前,先了解一下索引的分类
  Mysql中分为:普通索引,唯一索引,主键索引,组合索引,和全文索引。

index_name :索引名
table:表名
column:列名
length:列长度

普通索引

  是最基本的索引,它没有任何限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。它有以下几种创建方式:

# 1.直接创建索引CREATE INDEX index_name ON table(column(length)) # 2.修改表结构的方式添加索引ALTER TABLE table_name ADD INDEX index_name ON (column(length)) # 3.创建表的时候同时创建索引CREATE TABLE `table` (    `id` int(11) NOT NULL AUTO_INCREMENT ,    `title` char(255) CHARACTER NOT NULL ,    `content` text CHARACTER NULL ,    `time` int(10) NULL DEFAULT NULL ,    PRIMARY KEY (`id`),    INDEX index_name (title(length)))

唯一索引

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

# 1.创建唯一索引CREATE UNIQUE INDEX indexName ON table(column(length)) # 2.修改表结构ALTER TABLE table_name ADD UNIQUE indexName ON (column(length)) # 3.创建表的时候直接指定CREATE TABLE `table` (    `id` int(11) NOT NULL AUTO_INCREMENT ,    `title` char(255) CHARACTER NOT NULL ,    `content` text CHARACTER NULL ,    `time` int(10) NULL DEFAULT NULL ,     UNIQUE indexName (title(length)));

主键索引

  是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引:

CREATE TABLE `table` (    `id` int(11) NOT NULL AUTO_INCREMENT ,    `title` char(255) NOT NULL ,     PRIMARY KEY (`id`));

组合索引

  指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合

  最左前缀:组合索引遵从了最左前缀,利用索引中最左边的列集来匹配行,这样的列集称为最左前缀。例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引组合中的字段可以是(id,name,age)、(id,name)或者(id)。如果要查询的字段不构成最左面的前缀原则,那么就不会用索引,比如,age或者(name,age)组合就不会使用索引查询

#添加组合索引ALTER TABLE `table` ADD INDEX name_city_age (id,name,age);  #创建组合索引CREATE TABLE tab3(id INT(4) NOT NULL,name CHAR(20) NOT NULL,age INT(3) NOT NULL,info VARCHAR(255),INDEX multiIdx(id,name,age));

全文索引

  主要用来查找文本中的关键字,而不是直接与索引中的值相比较。跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。全文索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text列上可以创建全文索引。值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立全文然后再将数据写入的速度快很多。

# 1.创建表的适合添加全文索引CREATE TABLE `table` (    `id` int(11) NOT NULL AUTO_INCREMENT ,    `title` char(255) CHARACTER NOT NULL ,    `content` text CHARACTER NULL ,    `time` int(10) NULL DEFAULT NULL ,    PRIMARY KEY (`id`),    FULLTEXT (content)); # 2.修改表结构添加全文索引ALTER TABLE article ADD FULLTEXT index_content(content) # 3.直接创建索引CREATE FULLTEXT INDEX index_content ON article(content)

查看索引

## 查看表的索引SHOW INDEX FROM 表名;

在这里插入图片描述

解读索引

  • Table
    表示创建索引的数据表名,这里是 sys_数据表。
  • Non_unique
    表示该索引是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。
  • Key_name
    表示索引的名称。
  • Seq_in_index
    表示该列在索引中的位置,如果索引是单列的,则该列的值为1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。
  • Column_name
    表示定义索引的列字段。
  • Collation
    表示列以何种顺序存储在索引中。在 mysql 中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。
  • Cardinality
    索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,Mysql使用该索引的机会就越大。
  • Sub_part
    表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。
  • Packed
    指示关键字如何被压缩。若没有被压缩,值为 NULL。 Null 用于显示索引列中是否包
  • NULL
    若列含有NULL,该列的值为 YES。若没有,则该列的值为 NO。
  • Index_type
    显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)
  • Comment
    显示评注。

删除索引

DROP INDEX 索引名 ON 表名;## 删除book表中的名称为BkNameIdx的索引DROP INDEX BkNameIdx ON book;

索引失效

  1. 创建联合索引,但是没有遵循最左前缀法则,则会出现索引失效的情况。如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列
  2. where条件有数学运算或函数
  3. mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描
  4. mysql在使用 is null,is not null也无法使用索引
  5. like以通配符开头(‘%abc…’)mysql索引失效会变成全表扫描的操作,当%加在右边时可以使用
  6. 字符串不加单引号索引失效
  7. where条件使用or
  8. 注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

来源地址:https://blog.csdn.net/weixin_58286934/article/details/127676811

您可能感兴趣的文档:

--结束END--

本文标题: MySQL索引的创建与使用

本文链接: https://www.lsjlt.com/news/431491.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL索引的创建与使用
    索引的分类   在学习如何创建索引之前,先了解一下索引的分类   MySQL中分为:普通索引,唯一索引,主键索引,组合索引,和全文索引。 index_name :索引名 table:表名 colu...
    99+
    2023-10-18
    mysql 数据库 java
  • MySQL索引如何创建和使用索引
    创建MySQL索引可以通过以下两种方式: 使用CREATE INDEX语句创建索引: CREATE INDEX index_na...
    99+
    2024-03-06
    MySQL
  • mysql创建索引
    mysql创建索引?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!分为五种索引方式:1.添加PRIMARY KEY(主键索引...
    99+
    2024-04-02
  • mysql索引怎么创建和使用
    MySQL索引是用于加快查询速度的一种数据结构,可以提高查询效率。下面是创建和使用MySQL索引的步骤:1. 创建索引: &nbs...
    99+
    2024-02-29
    mysql
  • 创建和利用MySQL索引
    MySQL索引的创建和使用 MySQL是一种常用的关系型数据库管理系统,用于存储和管理数据。在处理大量数据时,索引是提高查询性能的关键。本文将介绍MySQL索引的创建和使用方法,并提供...
    99+
    2024-02-22
    使用 (use) mysql索引
  • mysql如何创建索引
    使用CREATE INDEX创建索引语法:CREATE [UNIQUE] INDEX index_name ONtb_name (col_name [(length)] ...
    99+
    2024-04-02
  • mysql 如何创建索引
    本文将介绍mysql 如何创建索引,需要的朋友可以参考下 添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE...
    99+
    2023-09-01
    mysql 数据库 sql
  • MYSQL创建联合索引
    在创建表的时候即指定联合索引,例如 -- 如果存在表,则删除DROP TABLE IF EXISTS core_fund_shares -- 创建表CREATE TABLE `core_fund_shares` ( `fund_code`...
    99+
    2023-08-30
    mysql 数据库
  • mysql 创建索引语句
    一、创建索引 PRIMARYKEY(主键索引) mysql > ALTERTABLE`table_name`ADDPRIMARYKEY (`column`) 2.UNIQUE(唯一索引) mysql ...
    99+
    2023-08-31
    mysql 数据库 java 面试 开发语言
  • MySQL创建组合索引
    大家都知道索引是用来优化的主要因素,对于少量数据索引的影响并不大,对于几十万或百万级别以上数据的时候,单列索引的性能也不是很理想,组合索引可以大大的减少开销。 一、创建组合索引的方法 1、sql语句: ALTER TABLE `table_...
    99+
    2023-08-31
    mysql创建组合索引 mysql组合索引
  • Mysql索引创建删除及使用代价
    目录一、Mysql 中索引的创建删除二、索引的代价1. 空间上的代价2. 时间上的代价小结一、Mysql 中索引的创建删除 innodb 和 myisam 引擎会自动为主键或者带有 ...
    99+
    2024-04-02
  • mysql索引创建和使用的方法是什么
    MySQL索引的创建和使用方法如下: 创建索引:可以在创建表时指定索引,也可以在表已经创建后创建索引。创建索引的语法如下: 在创...
    99+
    2024-04-09
    mysql
  • MySQL(73)MySQL创建索引(CREATE INDEX)
    MySQL创建索引(CREATE INDEX) 创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度。创建索引对 MySQL 数据库的高效运行来说是很重要的。 基本语法 MySQL 提供了三种创建索引的方法: 1) 使用 ...
    99+
    2023-09-07
    数据库 sql mysql
  • mysql中如何创建索引
    这篇文章主要介绍mysql中如何创建索引,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在执行CREATE TABLE语句时可以创建索引,也可以单独用CREATE INDEX或ALTER TABLE来为表增加索引。1、...
    99+
    2023-06-15
  • 如何使用 PHP 在 MySQL 表中创建索引?
    要使用 mysql 创建索引,可以使用 create index 语句。语法:create index index_name on table_name (column_name);建立...
    99+
    2024-05-12
    mysql 创建索引
  • MySQL中怎么创建索引
    在MySQL中,可以使用CREATE INDEX语句来创建索引。语法如下: CREATE INDEX index_name ON t...
    99+
    2024-04-09
    MySQL
  • SQL索引怎么创建使用
    这篇文章主要讲解了“SQL索引怎么创建使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL索引怎么创建使用”吧!索引的作用索引的作用就是加快查询速度,如果把使用了索引的查询看做是法拉利跑...
    99+
    2023-06-02
  • 使用NOSEGMENT创建测试索引
    如果你想要创建一个很大的索引,但并不想给它分配空间,而是要先确定优化器是否会选择使用该索引,那么在11g中可以使用NOSEGMENT来创建索引就可以先进行测试。如果确定了这个索引是有用的,可以删除该索引,然...
    99+
    2024-04-02
  • MySQL几种创建索引的方式
    一、创建表时创建索引 key 索引名 (column); 二、表创建好后创建索引 通过Alter创建索引 ①PRIMARY  KEY(主键索引)         mysql > ALTER  TABLE  `table_name`  A...
    99+
    2023-09-01
    mysql
  • mysql 创建索引的三种方式
    1、使用CREATE INDEX创建,语法如下: CREATE INDEX indexName ON tableName (columnName(length)); 2、使用ALTER语句创建,语法如下: ALTER TABLE ...
    99+
    2023-09-07
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作