Mysql复习1--理论基础+操作实践--更新中
Mysql
- 索引
- 索引的分类
- 索引失效
- sql优化
- 删除数据库
- 数据恢复
索引 | InnoDB引擎 | MyISAM引擎 | Memory引擎 |
---|---|---|---|
Btree索引 | 支持 | 支持 | 支持 |
hash索引 | 不支持 | 不支持 | 支持 |
R-tree索引 | 不支持 | 支持 | 不支持 |
Full-text索引 | 5.6版本以后支持 | 支持 | 不支持 |
索引
解释说明:
索引指的是帮助mysql高效的获取数据的结构叫做索引(有序)
没有建立索引的时候–全表扫描–再数据非常庞大的时候查询效率会非常慢
建立索引的时候----参考BTree和B+tree
优点:
1.提高了数据检索的效率降低了数据库的io成本
2.通过索引列对数据进行排序,降低额数据排序的成本,降低CPU的消耗
缺点:
1.索引本身也是一种数据结构,所以也就会占用一定的磁盘空间
2.可以参考btree树和b+tree树的规则就知道,他是可以提高插叙效率但是再新增删除修改数据的时候是比较麻烦的,每次都有可能调整索引的数据结构
索引的分类
索引 | 解释说明 |
---|---|
单值索引 | 即一个索引只包含单个列,一个表可以有多个单列索引 |
唯一索引 | 索引列的值必须唯一 |
复合索引 | 即一个索引包含多个列 |
索引的语法
例如:现在有一个表
create table city
(city_id bigint null comment '城市id',city_name varchar(50) null comment '城市名称',country_id bigint null comment '国家id',constraint city_pkprimary key (city_id)
);create table country
(country_id bigint null comment '国家id',country_name varchar(50) null comment '国家名称',constraint country_pkprimary key (country_id)
);#创建索引语法
create [unique | fulltext |spatial] index index_name [using index_type] on tbl_name(index_col_name,...)index_col_name: column_name[(length)][asc | desc]
#实例sql(普通索引):
create index idx_city_name on city(city_name);#查看索引
show index from table_name;
show index from city\G;
#删除索引
drop index index_name on tbl_name;
drop index idx_city_name on city;#alter命令操作
1.添加主键--索引引用值必须唯一并且不可以为null
alter table tb_name add primary key(column_list);
2.添加唯一索引
alter table tb_name add unique index_name(column_list);
3.普通索引--索引值可以出现多次
alter table tb_name add index index_name(column_list);
4.FULLTEXT--指定的索引为FULLTEXT,用于全文检索
alter table tb_name add fulltext index_name(column_list)
索引设计原则
1.对于查询频率比较高的,并且数据量比较大的表建立索引
2.索引的字段选择,最好是选列从where子句的条件中进行提取.如果where后面的组合比较多,根据实际情况选择最佳的组合列
3.使用唯一索引的时候,区分度越高,使用的索引的效率就会越大
4.使用短索引,索引创建之后也是使用磁盘来进行存储的,因此提高索引的访问i/o效率,也可以提升总体的访问效率,如果索引字段总长度比较短,那么在给定大小的存储内可以存储更多的索引值,相对应的有效提高了mysql的访问索引的i/o效率
5.利用最左前缀,N个列组合而成的组合索引,那么想当于创建了N个索引,如果查询时where子句中使用了组合索引的前几个字段,那么也是可以有效的提高查询的效率的
6.索引的数量并不是越多越好,索引越多,降低了增删改的维护,并且占用的磁盘空间也是会越来越多
查询索引是否生效的语句
#如果这个时候name是有索引的情况
explain select * from tb_seller where name='张三'
#查询当前会话的索引使用情况
show status like 'Handler_read%';
# 查询全局索引的使用情况
show global status like 'Handler_read%';
索引失效
索引失效有哪些情况
1.组合索引需要遵循最左匹配原则,如果中间跳过某一个索引就会导致索引的失效,比如我的组合索引是name-status-address,但是我查询的时候是where status='2’这样就会导致索引的失效;但是如果这个时候我是where后面是name-address,name的索引是生效的但是address的索引是失效的
2.范围查询的时候右边的列不能使用索引(组合索引),比如我现在是where name=‘张三’ and status>‘0’ and address=‘北京’,这个时候address的索引就是失效的情况
3.不要再索引列上进行运算的操作,否则会导致索引失效
4.字符串不加单引号,导致索引失效
5.使用or分割的条件,如果or前的条件中列有索引但是or后面没有索引就会导致前面的有索引失效
6.以%号开头的like模糊查询,索引也是会导致失效,如果是尾部模糊查询那么素索引还是会生效的,但是如果前后都是加了%号这个时候可以使用覆盖索引这个时候索引就会生效了
7.如果mysql觉得全表扫描更快也是不走索引的
8.is null 和is not null根据实际情况决定索引是否失效,和第7点差不多的意思
9.in走索引,not in 不走索引索引失效
10.表连接中的索引失效: 如果在表连接查询中,连接条件中的字段没有索引,可能导致索引失效。
sql优化
查询优化
1.尽量使用覆盖索引(只访问索引的查询,避免出现回表查询),避免使用select *
2.如果查询列超出了索引列,也是会降低查询的效率
3.多字段进行排序的时候要么统一升序要么统一降序要不然可能就会不是通过索引顺序扫描的结果了,这里就是会有针对查询的返回结果在进行排序,多了一个步骤查询效率不高
4.group by后面的字段可以增加索引,因为group by里面也会涉及到排序,所以按照索引进行排序效率高点或者在后面加上 order by null 不进行排序也是可以的
5.尽可能少的使用子查询使用多表联查查询
6.有索引的情况下使用inner join > in > exists
7.没有索引的情况下小表驱动大表,因为join方法里面需要distict,没有索引distict消耗性能较大,所以inner join < in < exists
8.order by尽量使用索引排序,避免使用fileSort文件排序
9.数据类型不匹配: 如果查询条件的数据类型与索引字段的数据类型不匹配,数据库无法使用索引
10.使用函数操作: 如果查询条件中对字段进行了函数操作(如 LOWER(column)),索引可能失效,因为数据库无法直接使用索引。
删除数据库
操作 | 是否可以删除全部数据 | 是否删除表结构 | 是否可以和where连起来使用 | 删除速度 |
---|---|---|---|---|
delete from | 可以(也可以删除部分数据) | 否 | 可以 | 慢 |
truncate table | 可以 | 否 | 不可以 | 快 |
drop table | 可以 | 是 | 不可以 | 最快 |
数据恢复
相关文章:
Mysql复习1--理论基础+操作实践--更新中
Mysql 索引索引的分类索引失效sql优化 删除数据库数据恢复 索引InnoDB引擎MyISAM引擎Memory引擎Btree索引支持支持支持hash索引不支持不支持支持R-tree索引不支持支持不支持Full-text索引5.6版本以后支持支持不支持 索引 解释说明: 索引指的是帮助mysql高效的获取数据的结构叫…...
微信小程序打卡定位实现方案
1背景 业务场景是考勤打卡,在考勤打卡这个业务场景中有两个关键技术点:定位和人员识别。用户界面初步确定是用微信小程序来实现,本文就定位问题做了技术上的调研。 2调研内容 平台注意事项 获取位置 选择位置 查看位置 距离计算 定位精度 防作弊 Demo 3调研结果 3.1平台注…...
小迪安全23WEB 攻防-Python 考点CTF 与 CMS-SSTI 模版注入PYC 反编译
#知识点: 1、PYC 文件反编译 2、Python-Web-SSTI 3、SSTI 模版注入利用分析 各语言的SSIT漏洞情况: SSIT漏洞过程: https://xz.aliyun.com/t/12181?page1&time__1311n4fxni0Qnr0%3DD%2FD0Dx2BmDkfDCDgmrYgBxYwD&alichlgrefhtt…...
计算机毕业设计 基于SpringBoot的律师事务所案件管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
如何使用宝塔面板配置Nginx反向代理WebSocket(wss)
本章教程,主要介绍一下在宝塔面板中如何配置websocket wss的具体过程。 目录 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 2、代理配置内容 三、注意事项 一、添加站点 二、申请证书 三、配置代理 1、增加配置内容 map $http_upgrade $connection_…...
vulhub之redis篇
CVE-2022-0543 | redis的远程代码执行漏洞 简介 CVE-2022-0543 该 Redis 沙盒逃逸漏洞影响 Debian 系的 Linux 发行版本,并非 Redis 本身漏洞, 漏洞形成原因在于系统补丁加载了一些redis源码注释了的代码 原理分析 redis一直有一个攻击面,就是在用户连接redis后,可以通过ev…...
Lua简介和应用场景介绍
Lua 的介绍 起源:Lua 于 1993 年在巴西里约热内卢的天主教大学(PUC-Rio)由 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 开发。 设计目的:Lua 设计的主要目标是为了嵌入到其他应用程序中,…...
【手写数据库toadb】10 开发数据库内核开发阶段-数据库模型
数据库内核模型介绍 专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方…...
02-Redis持久化、主从与哨兵架构详解
文章目录 Redis持久化RDB快照(snapshot)bgsave的写时复制(COW)机制AOF(append-only file)AOF重写RDB 和 AOF ,我应该用哪一个? Redis 4.0 混合持久化Redis数据备份策略: Redis主从架构redis主从…...
无刷电机篇(一)直流无刷电机(BLDC)介绍
目录 01 直流无刷电机介绍 直流无刷电机内部结构 转子描述 定子描述 02 直流无刷电机分类 直流无刷电机分类描述 内、外转子电机描述 内、外转子电机区别 03 直流无刷电机参数 无刷电机参数 04 文章总结 大家好,这里是程序员杰克。一名平平无奇的嵌入式软…...
【GitHub项目推荐--不错的Flutter项目】【转载】
01 可定制的图表库 FL Chart是一个高度可定制的 Flutter 图表库,支持折线图、条形图、饼图、散点图和雷达图 。 项目地址:https://github.com/imaNNeoFighT/fl_chart LineChart BarChart PieChart Sample1 Sample2 Sample3 …...
Unity UnityWebRequest 向php后端上传图片文件
之前测试功能写过一次,因为代码忘记保存,导致真正用到的时候怎么也想不起来当初怎么写的了,复现后还是写个文章记录一下,省的下次再忘记。 php后端 /*** 图片保存到本地*/ public function uploadLocalImage() {try {$img $thi…...
Vscode 顶部Menu(菜单)栏消失如何恢复
Vscode 顶部Menu(菜单)栏消失如何恢复? 首先按一下 Alt按键,看一下是否恢复了菜单栏如果恢复了想了解更进一步的设置,或是没能恢复菜单栏,可以看后续。 1.首先点击左下角 齿轮,打开settings; 或者 直接 ctrl 逗号 …...
Jenkins相关
1、Linux(Centos7)安装 jenkins (jdk1.8jenkins2.346),并配置jdk,maven,git,gitee 2、Linux(Centos7)安装 jenkins(jdk11jenkins2.375),并配置JDK,Maven,Git,GitLab 3、jenkins和jdk安装教程(安装支持jdk…...
禅道的安装以及使用
一,简介 禅道是一款专业的国产开源研发项目管理软件,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,完整覆盖了研发项目管理的核心流程。管理思想基于国际流行的敏捷项目管理方法——Scrum,在遵循其价值观…...
马尔可夫预测(Python)
马尔科夫链(Markov Chains) 从一个例子入手:假设某餐厅有A,B,C三种套餐供应,每天只会是这三种中的一种,而具体是哪一种,仅取决于昨天供应的哪一种,换言之&#…...
双向队列的创建队首与队尾的操作deque()
【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 双向队列的创建 队首与队尾的操作 deque() [太阳]选择题 请问以下代码输出的结果是? from collections import deque print("【创建双向队列】d deque()") d deque(…...
一、MongoDB、express的安装和基本使用
数据库【Sqlite3、MongoDB、Mysql】简介&小记 Sqlite3: SQLite3是一个轻量级的数据库系统,它被设计成嵌入式数据库。这意味着它是一个包含在应用程序中的数据库,而不是独立运行的系统服务。适用场景:如小型工具、游戏、本地…...
被困住了——如何从层级结构中获取子集
大家好,我是欧阳方超,我被一个问题困住了。 事情是这样的,与第三方平台对接时,第三方接口返回了一个具有层级结构的列表,比如下面这种结构: [{"id": 1,"name": "Root Category 1…...
leetcode1237. 找出给定方程的正整数解
1237. 找出给定方程的正整数解https://leetcode.cn/problems/find-positive-integer-solution-for-a-given-equation/ 难度中等 101 给你一个函数 f(x, y) 和一个目标结果 z,函数公式未知,请你计算方程 f(x,y) z 所有可能的正整数 数对 x 和 y。满…...
sqlmap使用教程(6)-注入技术拓展
注入技术 选项--technique,可以用来指定SQL注入技术,默认为BEUSTQ。其中,B表示基于布尔盲注,E表示基于错误的盲注,U表示基于联合查询注入,S表示堆叠注入,T表示基于时间盲注,Q表示内联…...
苹果Find My市场需求火爆,伦茨科技ST17H6x芯片助力客户量产
苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、AirPods、Apple Watch,如今的Find My已经不单单可以查找苹果的设备,随着第三方设备的加入,将丰富Find My Network的版图。产…...
3DMAX初级小白班第一课:菜单栏介绍
基本介绍 这里不可能一个一个选项全部教给大家(毕竟之后靠实操慢慢就记住了),只说一些相对需要注意的设置。 自定义-热键编辑器-热键设置 这里有你所需要的全部快捷键 自定义-自定义UI启动布局 将UI布局还原到启动的位置 自定义-通用单…...
Windows中Zookeeper与kafka的安装配置
一、Zookeeper安装与使用 1.安装包下载 直接在官网下载即可Apache ZooKeeper。 下载后直接解压到本地即可。 2.环境配置 1> 在目录中下增加data和log文件夹 2> 解压目录下的 conf 目录,将目录中的 zoo_sample.cfg 文件,复制一份,重…...
QT 官方例程阅读: XML Patterns 相关
标签用于在qt creator 中查询相关工程 一、标签 Schema Validator 模式验证器 就是根据 已知的XML 模式,验证输入的XML 文件格式是否匹配,不匹配可以输出不匹配位置 如下,,首先定义了contact 元素 的子元素列表,&…...
基于SpringBoot IP黑白名单的实现
业务场景 IP黑白名单是网络安全管理中常见的策略工具,用于控制网络访问权限,根据业务场景的不同,其应用范围广泛,以下是一些典型业务场景: 服务器安全防护: 黑名单:可以用来阻止已知的恶意IP地…...
Redis客户端之Redisson(二)Redisson分布式锁
一、原理: Redisson并没有通过setNx命令来实现加锁,而是基于 Redis 看⻔狗机制,自己实现了一套分布式锁逻辑。 1、加锁机制: 二、使用方法:...
掌握大语言模型技术: 推理优化
掌握大语言模型技术_推理优化 堆叠 Transformer 层来创建大型模型可以带来更好的准确性、少样本学习能力,甚至在各种语言任务上具有接近人类的涌现能力。 这些基础模型的训练成本很高,并且在推理过程中可能会占用大量内存和计算资源(经常性成…...
git如何导出提交记录及修改的文件清单?
导出git提交日志及修改文件 # 所有人的提交记录 git log --pretty=format:"%ai,%an:%s" --since="10 day ago" >> ~/Desktop/commit10.log#某一个人的提交记录 git log --pretty=format:"%ai,%an:%s" --since="30 day ago" |...
从零开始:Ubuntu Server中MySQL 8.0的安装与Django数据库配置详解
Ubuntu系统纯净安装MySQL8.0 1、安装Mysql8.0 sudo apt install mysql-server2、检查MySQL状态 sudo systemctl status mysql如下所示看见Active: active (running)说明mysql状态正常 ● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql…...
wordpress两边有空白/360免费建站教程
kali linux 2.0配置更新源后apt-get update 报错仅作个人笔记之用,更多干货请移步微信公众号“网络铅笔头”这是我设置的清华镜像源:deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-freedeb-src https://mirrors.tuna.tsi…...
wordpress 小工具 插件/如何在百度上发自己的广告?
项目涉及大量表格 估算 column 宽度实在是太low,所以尝试实现自适应。核心是对数据层进行修改,代码提供参考,大家不必细看,主要是分享思路。let column [ {label:"用户id",prop:"userId"}, …...
电子商务网站的建设包含哪些流程图/百度产品有哪些
计算机是如何启动的? 作者: 阮一峰 日期: 2013年2月16日 从打开电源到开始操作,计算机的启动是一个非常复杂的过程。 我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天&a…...
龙岗网站建设培训/南昌seo推广公司
1.项目规划 博客网站是一个JSP与数据库技术结合的应用,由前台用户操作和后台管理员操作模块组成。其规划功能模块如下: 查看文章 查看文章模块主要实现了查看博主发表的博客文章,并通过该模块可以对博主发表的文章添加评论信息。 查看相片 …...
做网站最便宜/迅雷下载磁力天堂
static的作用是将类的成员修饰成静态的,所谓的静态类成员就是指类的成员为类级别的,不需要实例化对象就可以使用,而且类的所有对象都共享同一个静态类成员,因为类静态成员是属于类而不是对象。 #include <iostream> using …...
wordpress文章图片尺寸/app开发制作
回答:IE6/7及IE8混杂模式中,text- align:center可以使块级元素也居中对齐。其他浏览器中,text-align:center仅作用于行内内容上。解决这个问题比较好的方式,就是为所有需要相对父容器居中对齐的块级元素设置“margin-left:Auto; m…...