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

MySQL record 07 part

索引

这里是引用
注意,是排序,有序就会加快查找的速度。
在这里插入图片描述
优势:在这里插入图片描述
在这里插入图片描述
劣势

  1. 索引会单独占用存储空间
  2. 索引虽然可以提高排序和查找的速度,但同时也会降低更新、删除、新增数据的速度,因为MySQL此时既要更改表,也要维护更改表后对索引的调整。

所以,只有当进行查找操作的时候,建议使用索引,其他操作(比如更删改就不要使用索引了。
索引分类:
在这里插入图片描述
普通索引:
在这里插入图片描述
key就是键
唯一索引:
在这里插入图片描述
单列索引:
在这里插入图片描述
多列索引:
在这里插入图片描述
全文索引:
在这里插入图片描述
在这里插入图片描述


索引的创建

隐式,自动添加的索引这里是引用
显式,创建索引
在这里插入图片描述
在这里插入图片描述
显式创建普通索引在这里插入图片描述
在这里插入图片描述
性能分析语句可以查看是否使用了索引,
先看字段 book_name 有索引
EXPLAIN SELECT * FROM book WHERE book_name=‘some’;
在这里插入图片描述

结果中看到type是ref表示使用了索引,索引名字为idx_bname 再看字段 info 是没有索引的, EXPLAIN SELECT *
FROM book WHERE info=‘some’;
在这里插入图片描述
结果中看到type是all,表示没有使用索引,
显式创建唯一索引
在这里插入图片描述
在这里插入图片描述
显式创建主键索引
在这里插入图片描述
在这里插入图片描述
显式创建单列索引
在这里插入图片描述
在这里插入图片描述
显式创建多列索引
在这里插入图片描述
在这里插入图片描述
多列索引也叫联合索引,
使用性能分析语句查看是否使用的索引,
创建表语句包含的联合索引为:INDEX mul_bid_bname_info(book_id,book_name,info)
EXPLAIN SELECT * FROM book4 WHERE book_id=‘some’;
在这里插入图片描述
上图中可以看到type为ref表示使用了联合索引,
注意,只有当查询的字段是多列索引中定义的首字段的时候,才会使用多列索引,如果查询的字段不是多列索引定义的多个字段中的第一个字段,将不会使用多列索引,举例如下:
EXPLAIN SELECT * FROM book4 WHERE book_name=‘some’;
在这里插入图片描述
可以看到,本次性能查询语句中查询的字段不是多列索引显式定义时的首字段(book_id,book_name,info),即使book_name在多列索引定义中,但此时做的查询是不会使用多列索引的。
再举一个例子,
EXPLAIN SELECT * FROM book4 WHERE book_id=1001 AND book_name=‘some’; 查询字段中指定了2个字段都包含在定义多列索引中,最重要的是其中有定义多列索引中的首字段book_id,所以这条查询语句一定会使用多列索引,
而下面的这个例子
EXPLAIN SELECT * FROM book4 WHERE info=‘book’ AND book_name=‘some’;
在这里插入图片描述
infobook_name 虽然都在定义的多列索引里,但它们都不是多列索引的首字段,所以在查询时候还是不会使用多列索引。
创建全文索引
在这里插入图片描述
在这里插入图片描述
创建索引的另一种方式,给已经存在的表创建索引:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用create index方式在已创建的表上创建索引:
在这里插入图片描述
在这里插入图片描述
这是在已经创建好的表上创建索引的另一种方式,
在这里插入图片描述
在这里插入图片描述
测试索引案例:
在这里插入图片描述
建表后,创建数据填充函数mock_data:
在这里插入图片描述
在创建函数过程中,如果出现错误提示:
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)
需要设置,
SET GLOBAL log_bin_trust_function_creators=TRUE;
如果数据库没有使用主从复制,那么就可以将参数log_bin_trust_function_creators设置为1。

mysql> set global log_bin_trust_function_creators=1;

这个动态设置的方式会在服务重启后失效,所以我们还必须在my.cnf中设置,加上log_bin_trust_function_creators=1,这样就会永久生效。
expain 可以分析MySQL语句的执行能力(耗时),
SELECT * FROM app_user WHERE name=‘user99’;
EXPLAIN SELECT * FROM app_user WHERE name=‘user99’;
在查询语句最前面加上EXPLAIN ,就可以分析这条查询语句的耗时(执行能力),
删除索引:
DROP INDEX uk_idx_bname ON book6;
在这里插入图片描述
alter

september2024the23thMonday

需要用到索引的几种情况:

在这里插入图片描述

不需要使用索引的几种情况:

这里是引用

索引失效的几种原因:

在这里插入图片描述
在这里插入图片描述

september2024the23thMonday


http://www.kler.cn/a/322381.html

相关文章:

  • AcWing 1234. 倍数问题(周二)
  • WPF MVVM框架
  • 【python】Bokeh 与 Plotly:创建交互式数据可视化工具
  • HarmonyOs鸿蒙开发实战(16)=>沉浸式效果第一种方案一窗口全屏布局方案
  • 【计算机网络安全】湖北大学-mysql事务隔离性实验
  • Qt中实现旋转动画效果
  • 自动化办公-Python-os模块的使用
  • 标准 I/O
  • 西门子6ES7414-4HM14-0AB0 CPU模块的优缺点
  • 最佳植树距离 - 华为OD统一考试(E卷)
  • 记录Mac编译Android源码踩过的坑
  • offset、client 和 scroll【JavaScript】
  • 这些主流的财务管理软件,你用过哪款?
  • 计算机网络中的VLAN详解
  • ASCII Unicode UTF-8 字符集 字符编码
  • 喜报丨INDEMIND荣获第九届“创客中国”智能机器人中小企业创新创业大赛三等奖
  • 【HTTP 和 HTTPS详解】1
  • 如何快速熟悉项目
  • Facebook公共主页bug问题解决措施清单
  • TDOA方法求二维坐标的MATLAB代码演示与讲解
  • 在ubuntu24.04上安装Ollama并设置跨域访问
  • 动态规划算法:10.路径问题_地下城游戏_C++
  • GPS定位和测量原理
  • 8,STM32CubeMX配置SPI工程(读取norflash的ID)
  • runwayML启动500万美元基金资助AI生成影视
  • rk3588s android12 自启动 C程序