当前位置: 首页 > news >正文

索引-分类

索引-分类

分类含义特点关键字
主键索引针对表中主键创建的索引默认自动创建,只能有一个PRIMARY
唯一索引避免同一个表中某数据列中的值重复可以有多个unique
常规索引快速定位特定数据可以有多个
全文索引全文索引查找的是文本中的关键词,而不是比较索引中的值可以有多个fulltext

在innoDB存储引擎中,根据索引存储形式,又可以分为以下两种:

分类含义特点
聚集索引将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据必须有,而且只有一个
二级索引将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键可以存在多个

聚集索引选取规则

如果存在主键,主键索引就是聚集索引。

如果不存在主键,将使用第一个唯一(unique)索引作为聚集索引。

如果表没有主键,或没有合适的唯一索引,则innoDB会自动生产一个rowid作为隐藏的聚集索引。

1.一下SQL语句,那个执行效率高?为什么?

select *from user where id =10;

select * from user where name =‘arm’

备注:id为主键,name字段创建的有索引;

innoDBZ主键索引的B+tree高度为多高呢?

假设:

一行数据大小为1k,一页中可以存储16行这样的数据。innoDB的指针占用6个字节的空间,主键即使为bigint,占用字节数为8。

高度为2:

n*8+(n+1)6=161024,算出n约为1170

1170*16=18736

高度为3:

1171 *1171 * 16=21939856

索引-语法

创建索引

create [unique|fulltext] index index_name on table_name (index_col_name,...)

查看索引

show  index from table_name;

删除索引

drop index index_name on table_name;

**案例 **

数据准备

CREATE TABLE tb_user (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,phone VARCHAR(20),email VARCHAR(100),profession VARCHAR(100),age INT,gender TINYINT,status TINYINT,create_time DATETIME
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;insert into itcast.tb_user (id, name, phone, email, profession, age, gender, status, create_time)
values  (1, '吕布', '17799990001', 'lyubu666@163.com', '软件工程', 23, 1, 6, '2001-09-02 00:00:00'),(2, '曹操', '17799990002', 'caocao666@qq.com', '通讯工程', 33, 1, 0, '2001-03-05 00:00:00'),(3, '赵云', '17799990003', '1779999@qq.com', '英语', 34, 2, 0, '2002-03-02 00:00:00'),(4, '孙悟空', '17799990004', '1779999004@qq.com', '工程造价', 54, 1, 0, '2001-09-22 00:00:00'),(5, '花木兰', '17799990005', '1779999005@sina.com', '软件工程', 23, 1, 1, '2001-04-07 00:00:00'),(6, '大乔', '17799990006', 'dagiao66@sina.com', '舞蹈', 23, 2, 0, '2001-08-08 00:00:00'),(7, '貂蝉', '17799990007', 'luna_love@sina.com', '应用数学', 22, 2, 0, '2001-06-23 00:00:00'),(8, '程咬金', '17799990008', 'chengyaojin@163.com', '化工', 24, 1, 0, '2001-04-18 00:00:00'),(9, '项羽', '17799990009', 'xiaoyu66@qq.com', '金属材料', 38, 1, 0, '2001-04-16 00:00:00'),(10, '白起', '17799990010', 'baiqi666@qq.com', '机械工程及其自动化', 43, 1, 0, '2001-01-11 00:00:00'),(11, '韩信', '17799990011', 'hanxin56.com', '无机非金属材料工程', 27, 1, 2, '2001-03-09 00:00:00'),(12, '荆轲', '17799990012', 'jingke1234@163.com', '会计', 27, 1, 0, '2001-02-10 00:00:00'),(13, '兰陵王', '17799990013', 'lanlingwang@126.com', '工程造价', 29, 1, 3, '2001-01-12 00:00:00'),(14, '狂铁', '17799990014', 'kuangtiex@sina.com', '应用数学', 44, 1, 2, '2001-02-12 00:00:00'),(15, '貂蝉', '17799990015', '0495984374@qq.com', '软件工程', 43, 2, 0, '2001-04-30 00:00:00'),(16, '狄仁杰', '17799990016', '8859@qq.com', '软件工程', 40, 1, 0, '2001-02-03 00:00:00'),(17, '半月', '17799990017', 'xiaomi2001@sina.com', '工业经济', 31, 1, 1, '2001-03-08 00:00:00'),(18, '小乔', '17799990018', '894334342@qq.com', '化工', 35, 2, 0, '2007-03-06 00:00:00'),(19, '狄仁杰', '17799990019', 'judymail@166.com', '国际贸易', 38, 0, 0, '2001-01-02 00:00:00'),(20, '安琪拉', '17799990020', 'jddomlhl@163.com', '城市规划', 30, 2, 0, '2001-04-12 00:00:00'),(21, '典韦', '17799990021', 'ycaunanjian@163.com', '城市规划', 51, 1, 2, '2001-02-12 00:00:00'),(22, '廉颇', '17799990022', 'altcy3200@139.com', '土木工程', 52, 1, 0, '2002-03-10 00:00:00'),(23, '后羿', '17799990023', 'altycj2000@139.com', '城市园林', 20, 1, 0, '2002-03-10 00:00:00'),(24, '姜子牙', '17799990024', '37483484@qq.com', '工程造价', 29, 1, 4, '2003-05-26 00:00:00');

按照下列的需求,完成索引创建

1.name字段为姓名字段,该字段的值可能会重复,为该字段创建索引。
create index idx_user_name on tb_user(name);
2.phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。
create unique index  idx_user_phone on tb_user(phone);
3.为profession,age,status创建联合索引。
create index  idx_user_pro_age_sta on tb_user(profession,age,status);
4.为email建立合适的索引来提升查询效率。
create index idx_user_email on tb_user(email);

数据库学习记录(看看多久可以掌握)

学习的课程是b站黑马程序员的免费课程,主要是记录一下代码和流程,没有很详细,下面是课程地址黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括_哔哩哔哩_bilibili

如果大家发现下面代码有错误的,请留言告诉我,我会及时修改的


文章转载自:

http://Wap2jr0t.rmpfh.cn
http://TLsKpZFQ.rmpfh.cn
http://td11Kvjt.rmpfh.cn
http://jE6jXsD6.rmpfh.cn
http://HE5V71lh.rmpfh.cn
http://q4kuAZ8A.rmpfh.cn
http://ZzvhsaUs.rmpfh.cn
http://uBZjGKYs.rmpfh.cn
http://uZ5VZH3Q.rmpfh.cn
http://JWAHDo5P.rmpfh.cn
http://9xo1wZtn.rmpfh.cn
http://LN380SFF.rmpfh.cn
http://fomo525t.rmpfh.cn
http://w6mQXXvq.rmpfh.cn
http://WpsPKmjS.rmpfh.cn
http://USksef6H.rmpfh.cn
http://Z8hA8GcJ.rmpfh.cn
http://JjvLxPg0.rmpfh.cn
http://4GDUnYzO.rmpfh.cn
http://iYN6DDcK.rmpfh.cn
http://gdS4OD3u.rmpfh.cn
http://fwpR90a1.rmpfh.cn
http://6JoEaKUf.rmpfh.cn
http://ZR17iLLp.rmpfh.cn
http://CvaurNjU.rmpfh.cn
http://nwhzkgBv.rmpfh.cn
http://y3e5ofZL.rmpfh.cn
http://RqrXaysf.rmpfh.cn
http://0QswYO4I.rmpfh.cn
http://81rNR7GA.rmpfh.cn
http://www.dtcms.com/a/383615.html

相关文章:

  • webrtc弱网-IntervalBudget类源码分析与算法原理
  • 第20课:数据治理与合规
  • 模型训练中的数据泄露:原理解析与实战防范指南
  • 凌晨0-3点不睡,你熬的不是夜,是人生!
  • [哈希表]966. 元音拼写检查器
  • 密码库的轻量化定制裁剪:技术原理与实践指南
  • Tomcat vs JBoss:轻量级与重型Java服务器对比
  • v-model与-sync的演变和融合
  • Vue的快速入门
  • 26考研——进程与线程(2)
  • Java基础 9.14
  • Node.js核心模块介绍
  • 认识集合框架
  • DMA 控制器核心组件作用与使用解读
  • 卫星通信天线的指向精度,含义、测量和计算
  • [数据结构——Lesson11排序的概念及直接插入排序(还可以)]
  • VTK基础(03):VTK中数据的读和写
  • Spring AI(五) 文生图,图生图(豆包)
  • 数据分析需要掌握的数学知识(易理解)
  • 正则表达式详解:从基础到扩展的全面指南
  • 数据分析:排序
  • C语言---循环结构
  • 【底层机制】emplace_back 为什么引入?是什么?怎么实现的?怎么正确用?
  • 基于LSTM深度学习的电动汽车电池荷电状态(SOC)预测
  • 机器学习周报十三
  • 记录word插入文字/图片,生成新word并转为pdf
  • 【ROS2】Concept(Basic)
  • Level Set(水平集)算法——形象化讲解
  • 45.sed,awk详解及相关案例
  • 聊一下贪心算法