文章目录什么是索引?为什么要使用索引(优缺点)?索引有哪几种类型?索引的使用场景有哪些?索引的基本原理索引的创建方式有哪几种?如何删除索引?主键索引与唯一索引的区别?什么是覆盖索引?聚集索引和辅助索引(非聚集索引)的区别?索引的数据结构有哪些?非聚簇索引一定会回表查询吗?索引设计的原则?使用索引一定能够提高查询的性能吗?什么是最左前缀原则(最左匹配原则)?B+树与B树?知道explain吗?说一
转载
2023-12-05 11:29:17
37阅读
1、数据库设计数据库设计的重要性:减少冗余,提高性能、易维护数据库设计的步骤:1、收集信息、标识对象、标识属性、标识关系(一对一、一对多、多对一、多对多)E-R图:属性:定义实体的性质、实体的特征实体:数据项(属性)的集合关联:实体之间相互连接的方式简单理解一下就可以了数据库规范化:第一范式(1NF):每列都应该是原子性的,五重复的域第二范式(2NF):在第一范式的基础上属性完全依赖于主键第三范式
分布式系统设计考虑点开源代码选取:(稳定性和性能)1、空间换时间1.1、多级缓存、静态化 - CDN静态内容分发网络 - 客户端界面缓存(304,界面无更新) - 反向代理缓存(静态界面缓存在Apache,后端无需请求web) - 应用端缓存(memcache,redis等,区别键值对用mem,持久化复杂用redis) - 数据库、中间件(buffer、cache等)。1.2、索引 索
1.学习背景 最近终于有时间静下心来,好好钻研一下Mysql了,特此开了Mysql系列文章,与大家一起分享小生的心得体会,有错误的地方,欢迎各位大佬指正。其实说起钻研mysql也并非是一时兴起,应该是蓄谋已久。现在微服务搞得可以说是如火如荼,我所在的公司也受到这股浪潮的
转载
2024-09-23 18:34:16
27阅读
(四)其他书上没有的索引使用经验总结 1、用聚合索引比用不是聚合索引的主键速度快 下面是实例语句:(都是提取25万条数据) select gid,fariqi,neibuyonghu,reader,title from Tgongwen where fariqi='2004-9-16' 使用时间:3326毫秒 select gid,fariqi,neibuyonghu,reader,t
游标 在操作mysql的时候我们知道MySQL检索操作返回一组称为结果集的行。这组返回的行都是与 SQL语句相匹配的行(零行或多行)。使用简单的 SELECT语句,例如,没有办法得到第一行、下一行或前 10行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们)。有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。游标( curs
转载
2024-01-04 06:15:05
30阅读
一、概述Mysql5.7版本自带4个数据库,information_schema、mysql、performance_schema、sys。其中mysql库是MySQL的核心数据库,类似于sql server中的master表,它包含存储MySQL服务器运行时所需信息的表,mysql库共计31张表。主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。二、mysql库
转载
2024-10-21 16:53:23
107阅读
ELK-全文检索技术-lucene
ELK : ELK是ElasticSearch,LogStash以及Kibana三个产品的首字母缩写 一.倒排索引学习elk,必须先掌握倒排索引思想, 二.什么是全文检索?诸如传统的正序查询(数据库查询),如果用到京东或淘宝上,用户输入关键
转载
2024-03-08 20:51:20
67阅读
InnoDB和MyISAM使用了b+树和b树作为索引组织的方式。在这些结构中,索引的深度是个关键因素。当查找被索引了的行时,查找会在索引上从根到叶子执行。假设这些索引不在内存中,索引的深度就代表了查找的(IO)代价。当然,我们希望大部分的查找都在内存中执行(被cache在内存中)。尽管如此,索引的深度仍然是一个重要因素。索引深度越深,查找越慢。那么什么影响了索引的深度?虽然有相当多的结构问题,但可
转载
2024-09-24 22:57:54
27阅读
# MySQL Log Dump:基础入门指南
## 什么是MySQL Log Dump?
MySQL Log Dump是一种用于将MySQL数据库的二进制日志和查询日志导出的工具。它通常用于数据恢复、审计或迁移目的。在处理MySQL数据库时,掌握日志的导出和管理非常重要。
## 实现流程
下面是实现MySQL Log Dump的流程:
| 步骤 | 描述
原创
2024-09-29 03:30:24
60阅读
MySQL提供了诸多种类的日志,帮助DBA获得数据库运行状况。MySQL日志类型说明error log数据库启动、运行、停止时产生该日志general query logclient执行语句时产生该日志binary log数据库内容发生变更时产生该日志,主从复制也通过binarylog来实现relay log从库上收到主库的数据更新时产生该日志slow query logSQL语句在数据库查询超过
转载
2024-09-03 17:00:48
38阅读
# MySQL中的视图简介及实现流程
## 什么是视图?
在MySQL中,视图是一种虚拟表,它并不实际存储数据,而是基于查询从一个或多个表提取数据显示。当我们需要以更简明、结构化的方式来访问复杂的数据时,视图显得尤为重要。视图能够简化查询、提升数据安全性以及便于数据维护。
## 视图的用途
1. **简化复杂查询**:将复杂的SQL查询封装为视图,用户后续可以直接查询视图而不必考虑背后的复
本文缘起自《一分钟了解索引技巧》的作业题。假设订单业务表结构为:order(oid, date, uid, status, money, time, …)其中:oid,订单ID,主键date,下单日期,有普通索引,管理后台经常按照date查询uid,用户ID,有普通索引,用户查询自己订单status,订单状态,有普通索引,管理后台经常按照status查询money/time,订单金额/时间,被查询
转载
2024-06-08 21:26:51
25阅读
Inodb 引擎1,每个新建索引,都需要考虑清楚看是否是必须的,很多新建的索引不仅不会提高 sql 语句的效率,反而会增加维护索引的成本 对于 Inodb 的 B-Tree,如果是非聚簇索引,每次检索都需要进行两次(本身+主键,此处不过多解释),所以当存在索引 (B),A是主键,就没有必要再建立索引(B, A),除非需要 order by a 才需要用到组合索
转载
2024-06-14 18:56:02
75阅读
为什么要学数据库?因为要更加高效的存储和使用数据,所以必须要学会使用数据库,当然这也分为简单的增删改查以以及高级操作。那么数据库(Mysql)到底是什么?数据库的本质就是存储和管理数据,方便查找,基本的功能就是增删改查。而Mysql就是其中应用比较广泛的数据库,类似Excel的表格形式更加直观。怎么使用数据库?数据库一些关键词数据库: 数据库是一些关联表的集合,也可以简单看做一个文件夹包含很多数据
转载
2023-08-21 11:36:28
68阅读
MySQL Server层对象解读一条查询语句从连接上MySQL服务器到返回数据这个过程在MySQL中还是有点复杂的下面我们我们就以此为突破口,来了解哈MySQL的各个功能模块的执行过程大致上来说:MySQL可以分为Server层和储存引擎层两部分Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等
转载
2023-11-28 09:24:24
25阅读
一、索引的概念 索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。二、索引的特点 1.索引可以加快数据库的检索速度 2.索引降低了数据库插入、修改、删除等维护任务的速度 3.索引创建在表上,不能创建在视图上 4.索引既可以直接创建,也可以间接创建
转载
2024-02-29 07:53:55
36阅读
刚开始接触C#语言,和之前学过的VB语言相比,还是存在一些相同之处和不同之处的。刚刚看完了一部分视频。视频中都是对基础知识的讲解。老师很逗,讲解的很细致。 1、.net是什么?:.net一般指得是.net FrameWork框架,是一种平台,一种技术体系。它由.NET Framework类库(FCL)和公共语言运行库(
转载
2023-08-12 14:00:17
99阅读
概述引入:为什么要使用索引?为了提高查找的效率,例如:在找一个年龄为10岁的人时,会进行全表扫描,即使找到了,也会全部扫描一遍。这样显然会使查询效率大大降低,此时引入索引的概念。索引既有优势也会有劣势:优势劣势提高数据检索的效率,降低数据库的IO成本索引列需要占用空间通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSER
转载
2023-10-19 10:43:01
86阅读
在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法。一般赋予浮点列的值被四舍五入到这个列所指定的十进制数。如果在一个FLOAT(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2。如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1. 2 3