男男做视频网站/seo排名规则
什么是索引
数据库索引是为了实现高效数据查询的一种有序的数据数据结构,类似于书的目录,通过目录可以快速的定位到想要的数据,因为一张表中的数据会有很多,如果直接去表中检索数据效率会很低,所以需要为表中的数据建立索引,这样就会提高效率。
索引优势
- 通过索引可以快速定位到数据,降低IO次数,提升效率
- 排序列添加索引,也可以提高提高排序的效率,因为索引是有序的。
索引劣势
- 索引保存也需要占用空间
- 增删改数据时,数据发生变化,索引也需要做出相应的改变,也是需要时间开销的
索引创建原则
-
什么时候需要创建索引
- 主键自动建立唯一索引
- 作为查询条件的字段应该创建索引(where 后面的语句中包含的字段)
- 尽量使用联合索引,减少单列索引
- 针对数据量较大,且查询比较频繁的表建立索引
- 查询中排序的字段,分组中的字段,若通过索引去访问将大大提高排序速度
-
什么时候不需要创建索引
- 表记录太少,例如类型表,员工职位表等
- 增删改频率高的表
- 查询条件中没有
- 唯一性差,例如性别,只有男和女两种值
索引分类
-
主键索引
创建表时,设置哪个列为 primary key ,主键列默认自动创建索引
# 创建主键索引方式1, 创建表时直接添加主键索引
create table 表名(id int primary key
);# 创建主键索引方式2, 表创建完成后, 修改表添加主键索引
create table 表名(id int
);
alter table 表名 add primary key 表名(id) ;
# 删除主键索引
alter table 表名 drop primary key;
-
唯一索引
设置某个列数据唯一性,会创建唯一索引
# 创建唯一索引方式1, 创建表时直接添加唯一索引
create table 表名(id int primary key auto_increment, -- 创建表时直接设置主键account varchar(20) unique
);# 创建唯一索引方式2, 表创建完成后, 修改表添加唯一索引
create table 表名(id int,account varchar(20)
);
create unique index index_unique_account on 表名(account);
# 删除索引, 非主键索引
drop index index_unique_account ON 表名;
-
单值索引
一个索引中,只包含一个列
# 创建索引
create index index_name on 表名(列名);# 删除索引, 非主键索引
drop index index_name ON 表名;
-
组合索引(复合索引)
一个索引中包含多个列,节省了索引开支
create table t(a int,b int,c int
);# 创建组合索引
create index index_t_a_b on t(a, b);# 删除索引, 非主键索引
drop index index_t_a_b ON t;
在查询时,如果使用组合索中包含的字段引作为查询条件,必须要包含组合索引中的第一个列,如在上述索引 index_t_a_b ,如果在查询时不使用a作为查询条件会导致索引失效。
通过 explain 可以查看查询时是否是由索引
# 索引生效
explain select * from t where a='' and b='';
explain select * from t where b='' and a='';
# 索引生效
explain select * from t where a='' and c='';
# 索引失效
explain select * from t where b='' and c='';
-
前缀索引
有些列长度比较大,需要给前面置顶的长度的区间添加索引即可。
create index 索引名 on 表名(列名(长度));
-
全文索引
模糊查询时,即使有索引也可能出现索引失效的情况
CREATE TABLE t(id INT PRIMARY KEY AUTO_INCREMENT,title VARCHAR(100)
);INSERT INTO t(title)
VALUES
('小明没考上中学'),
('李华没考上大学'),
('我四级没过')CREATE INDEX title_index_t ON t(title);# 索引生效
EXPLAIN SELECT * FROM t WHERE title LIKE '小明%'
# 索引失效
EXPLAIN SELECT * FROM t WHERE title LIKE '%没考%'
# 创建全文索引
CREATE FULLTEXT INDEX title_index_t ON t(title) WITH PARSER ngram;# 索引生效
EXPLAIN SELECT * FROM t WHERE MATCH(title) AGAINST('没考')
聚簇索引和非聚簇索引
区分方式:找到了索引是否就找对应的数据,找到是聚簇索引,没有找到事非聚簇索引
-
聚簇索引
找到索引就找到了对应的数据,即索引和数据的存储是在一起的
-
非聚簇索引
索引的存储和数据的存储是分离的,在myisam引擎中,由于索引和数据分别存储在两个不同的文件中,找到了索引,还需要重新查找一次才能找到数据。
innodb引擎中,像普通的索引也称为二级索引,他们也是非聚簇索引,例如为名字(name)创建索引(主键索引为以及索引),通过名字查找到id后,需要到主键索引树中找到对应的数据也是非聚簇索引。
回表查询
回表查询指的是查询时查询的次数不止一次
例:现在有表t结构如下:
- 通过id查询学生的所有信息,这时只需要查询一次即可,因为主键索引是聚簇索引,查询到id就找到了对应行的数据
SELECT * FROM t WHERE id = 1;
- 通过学号查询学生所有的信息,此时需要回表查询,因为根据学号找到后没有直接找到对应的其他数据(非聚簇索引)
SELECT * FROM t WHERE stu_no = '1001';
- 通过学号查询学生的学号,此时不需要回表查询,因为我们所需要的数据已经在学号的索引树上找到了,此时也是聚簇索引,没有回表查询操作。
SELECT stu_no FROM t WHERE stu_no = '1001';
这样的查询方式用于查看数据库中是否包含这个学号。
相关文章:

Mysql索引,聚簇索引,非聚簇索引,回表查询
什么是索引 数据库索引是为了实现高效数据查询的一种有序的数据数据结构,类似于书的目录,通过目录可以快速的定位到想要的数据,因为一张表中的数据会有很多,如果直接去表中检索数据效率会很低,所以需要为表中的数据建立…...

【优选算法 二分查找】二分查找算法入门详解:二分查找小专题
x 的平方根 题目解析 算法原理 解法一: 暴力解法 如果要求一个数(x)的平方根,可以从 0 往后枚举,直到有一个数(a),a^2<x,(a1)^2>x,a即为所求; 解法二:二分查找 …...

如何将CSDN博客下载为PDF文件
1.打开CSDN文章内容 2.按键盘上的f12键(或者右键—审查元素)进入浏览器调试模式,点击控制台(Console)进入控制台 3.在控制台输入以下代码,回车 4.在弹出的打印页面中将布局设置成横向,纵向会…...

pdf转word/markdown等格式——MinerU的部署:2024最新的智能数据提取工具
一、简介 MinerU是开源、高质量的数据提取工具,支持多源数据、深度挖掘、自定义规则、快速提取等。含数据采集、处理、存储模块及用户界面,适用于学术、商业、金融、法律等多领域,提高数据获取效率。一站式、开源、高质量的数据提取工具&…...

2024年下半年网络工程师案例分析真题及答案解析
2024年下半年网络工程师案例分析真题及答案解析 试题一(15分) [说明] 公司为某科技园区的不同企业提供网络服务,不同企业的业务有所不同,每个企业因业务需要在不同的地点有多个分支机构。其拓扑结构如图1所示。企业用户通过楼层接入交换机、楼栋汇聚交换机和区域交换机接…...

English phonetic symbol
英语音标发音表-英语48个音标在线读 (jiwake.com) 【英语音标教程】从此学会国际音标|英式音标|BBC音标教程全解_哔哩哔哩_bilibili 元音 单元音 /iː/,/ɪ/ 这两个音不是发音长短的区别, /uː/ /ʊ/ 上面那个就正常读,下面那个她的气大概是往你斜…...

普及组集训--图论最短路径设分层图
P4568 [JLOI2011] 飞行路线 - 洛谷 | 计算机科学教育新生态 可以设置分层图:(伪代码) E(u,v)w;无向图 add(u,v,w),add(v,u,w); for(j1~k){add(ujn,vjn,w);add(vjn,ujn,w);add(ujn-j,vjn-j,0);add(vjn-j,ujn-j,0); } add(ujn-j,vjn-j,0); add(vjn-j,uj…...

SYN6288语音合成模块使用说明(MicroPython、STM32、Arduino)
模块介绍 SYN6288中文语音合成模块是北京宇音天下科技有限公司推出的语音合成模块。该模块通过串口接收主控传来的语音编码后,可自动进行自然流畅的中文语音播报。 注:SYN6288模块无法播报英文单词和句子,只能按字母播报英文 ;而…...

Spring完整知识三(完结)
Spring集成MyBatis 注意 Spring注解形式集成MyBatis时,若SQL语句比较复杂则仍采用映射文件形式书写SQL语句;反之则用注解形式书写SQL语句,具体可详见Spring注解形式 环境准备相同步骤 Step1: 导入相关坐标,完整pom.…...

保姆级教程Docker部署Redis镜像
目录 1、创建挂载目录和配置文件 2、运行Redis镜像 3、查看redis运行状态 1、创建挂载目录和配置文件 # 创建宿主机Redis配置文件存放目录 sudo mkdir -p /data/docker/redis/conf# 创建Redis配置文件 cd /data/docker/redis/conf sudo touch redis.conf 到Github上找到Redi…...

子类有多个父类的情况下Super不支持指定父类来调用方法
1、Super使用方法 super()函数在Python中用于调用父类的方法。它返回一个代理对象,可以通过该对象调用父类的方法。 要使用super()方法,需要在子类的方法中调用super(),并指定子类本身以及方法的名称。这样就可以在子类中调用父类的方法。 …...

AI大模型ollama结合Open-webui
AI大模型Ollama结合Open-webui 作者:行癫(盗版必究) 一:认识 Ollama 1.什么是Ollama Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型,降低使用大语言模型的门槛,使得大模型的开发者、研究人员和爱好者能够在本地环境快速实验、管理和…...

RK3568笔记2:NOR_Flash和NAND_Flash与SDMMC和eMMC
1. 本质区别 特性NOR Flash/NAND FlashSDMMC/eMMC定义基础存储器(原始闪存芯片)基于闪存芯片的存储模块,带有控制器组成结构只有原始存储芯片存储芯片 控制器控制方式需主机直接控制,读写逻辑由主机完成内置控制器,主…...

windows python qt5 QChartView画折线图
环境:windows pyqt5 ,用QCartView画折线图 环境需要提前安装 pip install PyQtChart 折线图随着时间推移会不断移动,主动更新x轴坐标 import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout from PyQt5.QtChart imp…...

阿里云通义千问:全面解析智能云服务先锋
一、技术架构与基础 模型构建基石 采用大规模语料库训练,涵盖多领域知识,如科学、历史、文学等,确保知识储备丰富多样。运用先进的神经网络架构,深度优化模型结构,提高信息处理效率与准确性。持续的语料更新机制&…...

QT 贪吃蛇
1.注意点 新new对象时,要food->show(),否则屏幕不显示 setText() 要求字符串 事件的触发必须写在QWidget中或这是他的子类才能触发,snake.cpp继承的是QTimer 产生动态的原因是定时器每间隔一秒执行一次 信号可以定义在别的.cpp中,只要连接…...

二、点亮希望之光:寄存器与库函数驱动 LED 灯
文章目录 一、寄存器1、存储器映射2、存储器映射表3、寄存器4、寄存器映射5、寄存器重映射6、总线基地址、外设基地址、外设寄存器地址7、操作寄存器(以操作一个GPIO口为例)1. 寄存器地址定义部分2. GPIOD_Configuration 函数部分3. main 函数部分 二、库…...

Oracle 用户管理模式下的恢复案例-不完全恢复
1. 不完全恢复的几种常用方法 01. recover database using backup controlfile 如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉 oracle,不要以 controlfile 中的 scn 作为恢复的终点; 02. recover database until …...

SharpDevelop IDE IViewContent.cs类
文件位置:IViewContent.cs /// <summary>/// IViewContent is the base interface for "windows" in the document area of SharpDevelop./// A view content is a view onto multiple files, or other content that opens like a document/// (e.…...

Unity RectTransUtility工具类
这个工具主要是用于动态生成UI的情况。项目中我们通过配置UI的锚点、位置以及大小(位置、大小都是通过蓝湖看到的),然后通过代码动态生成UI。 大部分情况下只要合理设置锚点,那么生成出来的UI就已经满足了适配的要求。 using UnityEngine;public static…...

React性能优化
三个可以优化的地方 避免过度多次渲染 组件会在以下情况下重新渲染 注意:例如组件组合的形式,<Test><Counter></Counter></Test>,即使Test发生了重新渲染,Counter也不会重新渲染。另外使用React这样的库或框架时&a…...

前端开发流程实操:从概念到上线
在前端开发这个充满创意与技术挑战的领域,一个清晰的开发流程是确保项目顺利进行并达到预期效果的关键。 下面就和大家分享一下前端开发的实操流程。 一、项目启动与需求分析 前端开发不是孤立的,它是整个项目的一部分,所以首先要与项目团…...

Metasploit使用
最近在学Metasploit,Metasploit是一个免费的、可下载的渗透测试框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击,是一个集成了渗透测试全流程的渗透工具。 图一 模块:模块组织按照不同的用途分为7种类型的模块 &am…...

Milvus向量数据库05-常见问题整理
Milvus向量数据库05-常见问题整理 1-什么是PipeLine 这张图展示了一个文档处理和搜索系统的架构,主要分为两个部分:Ingestion Pipeline(摄取管道)和 Search Pipeline(搜索管道)。下面是对图中各部分的详细…...

Ruby On Rails 笔记3——表的增删改查
1.Migration Migrations是一种便利的方法,能以重现的方式随时间推移改变数据库schema. 使用Ruby Domain Specific Language (DSL),因此你不用手写SQL,进而使你的schema和changes与数据库独立。 可以把每次migration看作是数据库的一个新“版本”。A schema开始时什么都没有…...

CSS3 动画详解,介绍、实现与应用场景详解
CSS3 动画概述 CSS3 动画是通过 CSS3 的新特性来实现元素的动态变化。与传统的 JavaScript 动画不同,CSS3 动画主要通过 CSS 属性的变化来实现动画效果,具有高效、轻量和易于实现的优点。CSS3 动画通常用于网页的动态交互效果、过渡效果、元素移动、缩放、旋转等场景。 一、…...

Winston-MySQL 使用文档
目录 简介 安装 配置 环境变量配置 日志级别和表配置 创建 Logger 实例 文件传输配置 控制台输出配置 完整代码 使用方法 记录信息日志 记录错误日志 记录警告日志 总结 简介 winston-mysql 是一个为 winston3.x 日志库设计的 MySQL 传输插件,允许你…...

java日期工具: 获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。
文章目录 日期字符串格式化获取两个日期之间的所有日期 (字符串格式)获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。生效时间需要大于当前时间结束时间的月份不能大于当前月份日期字符串格式化 /*** 日期字符串格式化** @param time* @param Format_int…...

【Rive】混合动画
1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程,本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行,这些动画控制的…...

qt应用程序崩溃日志和转储dmp文件对于定位问题
qt应用程序崩溃日志和转储文件对于定位问题 一. DMP 文件包含的信息:二. 分析 DMP 文件的主要方法:三. 生成更详细的 DMP 文件:四. 分析 DMP 文件的注意事项:五. 实用建议:六. 实战 一. DMP 文件包含的信息:…...