随笔分类 -  数据库 / DB-MySQL

摘要:一张表 id, name, gender, salery 在大多数情况下,where和having是可以等价使用的,比如下面的情况就是等价的: select id,name,gender where gender='男' select id, name,gender having gender='男 阅读全文
posted @ 2021-01-14 08:52 寻找风口的猪 阅读(173) 评论(0) 推荐(0)
摘要:转:https://blog.csdn.net/qq_40277973/article/details/81517479 下载MySQL 进入MySQL官网,依次点击:上方选项卡DOWNLOADS->页面底端MySQL Community Edition->MySQL Community Serve 阅读全文
posted @ 2020-03-12 23:36 寻找风口的猪 阅读(295) 评论(0) 推荐(0)
摘要:1、不要取出全部列,取出全部列,会让优化器无法完成索引覆盖扫描这类优化,还会为服务器带来额外的I/O、内存和CPU的消耗。应该严格禁止SELECT * 的写法。MySQL使用如下三种方式应用WHERE条件,从好到坏依次为: 1.1 在索引中使用WHERE条件来过滤不匹配的记录。这是在存储引擎层完成的 阅读全文
posted @ 2020-01-11 22:03 寻找风口的猪 阅读(512) 评论(0) 推荐(0)
摘要:MySQL关联查询的三种写法: SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id);SELECT * FROM film JOIN film_actor USING (film_id); --当两个要关联 阅读全文
posted @ 2017-11-07 19:26 寻找风口的猪 阅读(467) 评论(0) 推荐(0)
摘要:1、查询首先考虑在where和order by设计的列上建立索引,尽量避免全表扫描。 2、尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描。 最好不要给数据库字段留null,尽可能使用not null填充数据库。备注、描述、评论之类的可以设置为 NULL, 阅读全文
posted @ 2017-10-31 13:53 寻找风口的猪 阅读(608) 评论(0) 推荐(0)
摘要:先看看使用explain执行查询语句显示的列 1、id列: id相同,执行顺序由上至下 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行。 id如果相同,可以认为是一组,从上往下顺序执行,在所有组中,id值越大优先级越高,越先执行。 2、select_type列: 这一列显示了对应行 阅读全文
posted @ 2017-10-27 18:39 寻找风口的猪 阅读(493) 评论(0) 推荐(0)
摘要:在InnoDB加锁前,为什么要先start transaction innodb下锁的释放在事务提交/回滚之后,事务一旦提交/回滚之后,就会自动释放事务中的锁,innodb默认情况下autocommit=1即开启自动提交 检索条件使用索引和不使用索引的锁区别: 检索条件有索引的情况下会锁定特定的一些 阅读全文
posted @ 2017-10-24 19:15 寻找风口的猪 阅读(487) 评论(0) 推荐(0)
摘要:事务的隔离级别和锁机制: READ UNCOMMITTED(未提交读) 在这个级别,事务中的修改,即使没有提交,对其他事务也都是可见的,事务可以读取未提交的数据。(不加锁或只加共享锁) READ COMMITTED(提交读) 一个事务开始时,只能“看见”已经提交的事务所做的修改。也就是一个事务从开始 阅读全文
posted @ 2017-10-24 19:15 寻找风口的猪 阅读(492) 评论(1) 推荐(0)
摘要:InnoDB的MVCC,是通过在每行记录后面保存三个隐藏的列来实现的其中的两个列一个保存了行的创建时间,一个保存行的过期时间(或删除时间)。当然存储的并不是实际的时间值,而是系统版本号(system version number): 1、DB_TRX_ID :6字节的事务ID,每处理一个事务,其值自 阅读全文
posted @ 2017-10-24 09:07 寻找风口的猪 阅读(710) 评论(0) 推荐(0)
摘要:独立索引: 独立索引是指索引列不能是表达式的一部分,也不能是函数的参数 例1: SELECT actor_id FROM actor WHERE actor_id+1=5 --这种写法,就算在actor_id上建立了索引,也不起效 例2: SELECT .... WHERE TO_DAYS(CURR 阅读全文
posted @ 2017-10-16 08:59 寻找风口的猪 阅读(559) 评论(0) 推荐(0)
摘要:mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性能。 重复索引是指的在相同的列上按照相同的顺序创建的相同类型的索引,应该避免这样创建重复索引,发现以后也应该立即删除。但,在相同的列上创建不同类型的索 阅读全文
posted @ 2017-10-16 08:50 寻找风口的猪 阅读(5904) 评论(1) 推荐(0)
摘要:什么叫做覆盖索引? 在了解覆盖索引之前我们先大概了解一下什么是聚集索引(主键索引)和辅助索引(二级索引) 聚集索引(主键索引): 聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。 聚集索引的叶子节点称为数据页,聚集索引的这个特性决定了索引组织表中的数据也是索引的 阅读全文
posted @ 2017-10-13 19:32 寻找风口的猪 阅读(110781) 评论(7) 推荐(19)
摘要:1、什么叫做聚集索引呢? (图1) 如图所示,可以看到叶子节点包含了完整的数据记录,这种索引就叫做聚集索引 2、聚集索引的特点: 2.1 因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键,如果没有主键InnoDB会选择一个唯一的非空索引代替。如果没有这样的索引,InnoD 阅读全文
posted @ 2017-10-11 19:55 寻找风口的猪 阅读(2145) 评论(0) 推荐(1)