MySQL数据库
文章平均质量分 93
介绍数据库的索引、事务、锁、优化等技术理论
静下心来敲木鱼
机会是留给有准备的人的
展开
-
MySQL语句性能分析与优化
InnoDB引擎在执行count()*时,需要把遍历整张表,把数据一行一行地从引擎里面读出来,然后积累计数(如果为Null则不加1,如果为非Null值则计数加1),最后将积累的计数输出(无论是否有where条件,InnoDB都是这样操作的)当我们查询limit 10000,10时,我们需要排序MySQL前10010条记录,但是只范围10000-10010之间的10条记录,其它记录丢弃,此时查询的代价就很大(排序是为了保证每次通过limit查到的记录都一样)并且该行锁是针对索引加的锁,不是针对记录加的锁;原创 2023-08-06 19:01:26 · 459 阅读 · 0 评论 -
MySQL索引3——Explain关键字和索引使用规则(SQL提示、索引失效、最左前缀法则)
Using Filesort:通过表的索引或者全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序(多见于order by语句)----此种情况一般需要优化(优先通过建立索引解决)在查询时,如果中途跳过了联合索引中的某一列,索引部分失效(此列之后的列索引失效),即无法进行索引查询,只可以进行全文查询。在使用联合索引进行查询时,查询从联合索引的最左列开始,并且不跳过索引中的列,可以跳过最右边的一列或多列;原创 2023-08-05 20:20:11 · 2002 阅读 · 0 评论 -
MySQL索引2——索引的类型以及索引的创建
按照B+Tree存储形式方式分类聚集索引和二级索引(两种索引的存储格式)按照索引的特征进行分类主键索引、唯一索引、常规索引、全文索引、空间索引其中主键索引、唯一索引、常规索引都为B+Tree索引结构全文索引为Full-Text索引结构空间索引为R-Tree索引结构按照单个索引的字段个数分类单列索引和联合索引对于索引的优化又有两种索引前缀索引和覆盖索引在讲解索引的具体类型之前我们先了解一下索引的相关知识什么是回表查询。原创 2023-08-04 20:15:00 · 701 阅读 · 0 评论 -
MySQL索引1——索引基本概念与索引结构(B树、R树、Hash等)
索引只是一个提高效率的因素,如果MySQL有大数据量的表,就需要花时间研究最优秀的索引(即需要研究为哪些字段建立索引能够使得效率提升到最大化,因为一条查询语句只会引用到一种索引,并且一般建议一个表建立的索引数量不要超过5个)MySQL的索引数据结构对经典的B+Tree进行了优化,在原B+Tree的基础上,增加了一个指向相邻叶子节点的链表指针,所有叶子节点形成了一个双向链表,提高了遍历速度。一个表中的某字段存储着一个地方餐馆的经纬度位置信息,现在我们需要根据我们的位置,找附近1公里的餐馆。原创 2023-08-03 21:40:06 · 1515 阅读 · 0 评论 -
MySQL多表查询(联合查询、连接查询、子查询)
EXCEPT 将两张表的某些字段的公共记录减去,然后返回一张表的剩余记录(差集)(MySQL不存在,使用NOT IN字段实现)3、作为联合查询的多表之间的列数、以及列数的类型必须相同(例如:表1查询哪些列,表2就查询哪些列)1、通过联合查询,可以得到两张表中记录的集合或者公共记录的集合,或者其中某张表中的记录的集合。将两张表的全部记录交叉组合,在添加了其他表字段的同时,所得的记录数是两张表行数的乘积。#查询张三入职之后的所有员工信息(先查询张三的入职信息,再查询此时间之后的员工信息。原创 2023-07-27 11:30:00 · 21351 阅读 · 4 评论 -
MySQL函数讲解(字符串函数、转化函数、流程函数、比较谓词等)
MySQL常见函数字符串函数 进行字符串操作的函数算术函数 进行数值计算的函数日期函数 进行日期操作的函数转换函数 进行数据类型和值转换的函数流程函数 进行条件删选聚合函数 进行数据聚合的函数谓词 一般用于条件判断 CASE原创 2023-07-25 21:50:53 · 424 阅读 · 0 评论 -
MySQL事务的概念(事务并发问题与事务隔离等级)
什么是事务事务是一组操作的集合,它是一个不可分隔的工作单位事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求从事务开始直到用户执行COMMIT或者ROLLABACK为止算作一个事务即:将多个操作绑定到一起,这些操作要么同时成功,要么同时失效。原创 2023-07-25 14:16:51 · 205 阅读 · 0 评论 -
MySQL基础语法(DDL、DQL、DML、DCL)
SELECT字段列表 FROM表名查询多个字段SELECT 字段1,字段2…… FROM 表名查询全部字段SELECT * FROM 表名;查询时为字段设置别名方便阅读(AS可以省略)SELECT 字段1 [AS别名1] , 字段2 [AS别名2]…… FROM 表名;查询时去除重复记录(DISTINCT关键字只可以使用在第一个字段名之前)SELECT DISTINCT 字段1,字段2,…… FROM 表名;查询。原创 2023-07-25 11:22:20 · 431 阅读 · 0 评论 -
MySQL的基本概念(数据库类、数据模型、服务启动与连接)
cat /var/log/mysqld.log #在此文件下查找 temporary password 就有默认的root密码。将大量的数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合就成为数据库(Database),也称为DB。mysql -h 【sql的IP地址】 -P 【sql的端口号】 -u 【登录所使用的用户名】 -p。使用键值对来存储数据(主键Key和值Value的组合),不用表来存储数据的数据库。启动mysql服务(Mysql安装后会自动生成名为mysqld的服务)原创 2023-07-24 19:30:00 · 420 阅读 · 0 评论