事务基础知识
1. 数据库事务概述 1.1 存储引擎支持情况 <font style="color:#DF2A3F;">SHOW ENGINES </font>** 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。 ** 能看出在 MySQL 中,只有**<font style=
1. 数据库事务概述 1.1 存储引擎支持情况 <font style="color:#DF2A3F;">SHOW ENGINES </font>** 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。 ** 能看出在 MySQL 中,只有**<font style=
1. 为什么需要数据库设计 <font style="color:#DF2A3F;">我们在设计数据表的时候,要考虑很多问题。比如:</font> 用户都需要什么数据?需要在数据表中保存哪些数据? 如何保证数据表中数据的正确性,当插入、删除、更新的时候该进行怎样的约束检查? 如何降低数据表的数据冗余
<h1 id="oX9ck">普通索引 vs 唯一索引 </h1> 在不同的业务场景下,应该选择普通索引,还是唯一索引? 假设你在维护一个居民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果居民系统需要按照身份证号查姓名: select name from
<h1 id="kDRrh">索引下推 (就是不着急回表,减少回表数量)</h1> 更多的是在联合索引使用 Index Condition Pushdown(ICP)是MySQL 5.6中新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。ICP可以减少存储引擎访问基表的次数以及MySQL服务
什么是覆盖索引? 理解方式一: 索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它 不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数 据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。 理解方式二: 非聚簇复合
优化分页查询 一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是imit2000000,10,此时需要MySQL排序前2000010记录,仅仅返回2000000-2000010的记录,其他记录丢弃,查询排序的代价非常大。 EXPLAIN SELECT * FROM s
<h1 id="wiuol">排序优化 </h1> <h2 id="JdsR2">1 排序优化 </h2> **问题:在 WHERE 条件字段上加索引,但是为什么在 ORDER BY 字段上还要加索引呢? ** **回答: ** 在MySQL中,支持两种排序方式,分别是 FileSort 和 Ind
如何给字符串添加索引 有一张教师表,表定义如下: create table teacher( ID bigint unsigned primary key, email varchar(64) )engine=innodb; 讲师要使用邮箱登录,所以业务代码中一定会出现类似于这样的语句: s
● group by 使用索引的原则几乎跟order by一致 ,group by 即使没有过滤条件用到索引,也可以直接使用索引。 ● group by 先排序再分组,遵照索引建的最佳左前缀法则 ● 当无法使用索引列,增max_length_for_sort_data 和 sort_buffer_s
<h1 id="d37bM">关联查询优化</h1> <h2 id="FaZio">1 数据准备 </h2> # 分类 CREATE TABLE IF NOT EXISTS `type` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card