MySQL索引的使用 及简单介绍索引

6 篇文章 0 订阅
2 篇文章 0 订阅

MySQL

索引

  • 索引的概念
    • 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
  • 索引使用场景
    • 适用于日常业务中,查询占得比重比较大的操作
索引创建的基本原则
  • 比较频繁的作为查询条件的字段
  • 唯一性太差的字段不适合作为单独创建的索引,即使它被频繁作为查询条件
  • 更新频繁的字段不能作为索引
  • 不会出现在where子句中的字段不该创建索引
索引实现
采用的结构
  • 搜索树

    • 搜索树 (B树系列)时间复杂度(O(log(n)))
      检索效率和高度有关
      可以提供有序性
      相比较二叉搜索树,高度更低
  • 哈希(hash)散列表

    • 哈希(hash)散列表
      检索率高 时间复杂度(O(1))
      但是无序
索引的几种形式
* **主键      (Primary Key)**
            --   	I
            create table Teacher(
            	id int,
            	name varchar(20),
            	primary key (id);
            
            --		II
            create table Teacher(
            	id int primary key,
            	name varchar(20)--     	III
            
            create table Teacher(
            	id int,
            	name varchar(20),
            --   创建多字段的主键
            	primary key (id,name);
            
            --   	IIII  追加主键
            create table Teacher(
            	id int,
            	name varchar(20);
            alter table Teacher add primary key(id);

  • 唯一键 (Unique)
           create table Teacher(
           	id int primary key,
           	name varchar(20) unique;
           	
           create table Teacher(
           
           	id int primary key,
           	name varchar(20),
           	unique (name);
           	
           -- 追加唯一键
           alter table Teacher add unique (name);

  • 普通索引 (Key|Index)
         create table Teacher(
         	id int primary key,
         	name varchar(20),
         	gender varchar(4),
         	unique (name),
         	index (gender);
         
         create table Teacher(
         	id int primary key,
         	name varchar(20),
         	gender varchar(4),
         	unique (name);
         -- 追加
         alter table Teacher add index (gender);
         
         -- 直接创建
         create index idx_gender on                        Teacher(gender);

  • 全文索引 (FULLTEXT
    极少使用
     
      CREATE TABLE articles (
     
     id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
     
     title VARCHAR(200),
     
     body TEXT,
     
     FULLTEXT (title,body)
     
     )engine=MyISAM;
查询索引
     show keys from Teacher\G;
     
     show index from Teacher\G;
索引的删除
    alter table Teacher drop primary key;
    
    alter table Teacher drop index  idx_gender;
查看索引是否命中
  • 关键字: explain
  • 使用
    explain select * from EMP where deptno = 10\G;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
索引是提高数据库查询效率的一种重要方式,它可以快速定位到需要查询的数据,从而提高查询速度。下面是 MySQL索引使用介绍及代码示例。 MySQL 中的索引包含以下几种类型: 1. 主键索引(Primary Key Index):用于唯一标识一条记录,一个表只能有一个主键索引。 2. 唯一索引(Unique Index):用于保证某个字段或多个字段的值在表中是唯一的。 3. 普通索引(Normal Index):最基本索引,用于加速查找数据。 4. 全文索引(Fulltext Index):用于对文本数据进行全文搜索。 下面是代码示例: 1. 创建表并添加主键索引 ``` CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 2. 添加唯一索引 ``` ALTER TABLE `student` ADD UNIQUE INDEX `name_index` (`name`); ``` 3. 添加普通索引 ``` ALTER TABLE `student` ADD INDEX `age_index` (`age`); ``` 4. 添加全文索引 ``` ALTER TABLE `student` ADD FULLTEXT INDEX `name_fulltext_index` (`name`); ``` 5. 查询时使用索引 使用索引可以通过 `EXPLAIN` 关键字来查看 SQL 语句执行的查询计划,可以看到是否有使用索引。 ``` EXPLAIN SELECT * FROM `student` WHERE `name` = '张三'; ``` 查询结果中会显示使用索引名称,如果没有使用索引,则需要优化 SQL 语句或者添加索引。 以上是 MySQL索引使用介绍及代码示例,合理地使用索引可以提高数据库查询效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值