MySQL 索引合并

是在 MySQL 5.0 后引入的的索引合并策略,它将每个索引查询的结果进行合并。

合并算法有三种:intersect(交集)、union(并集)、sort_union(不常见)。

阅读更多

MySQL 索引下推

在 MySQL 5.6 版本后加入的新特性索引下推(Index Condition Pushdown)。 可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。

Index Filter 与 Table Filter 分离,Index Filter 下降到 InnoDB 的索引层面进行过滤,减少了回表与返回 MySQL Server 层的记录交互开销,提高了 SQL 的执行效率。

阅读更多

MySQL 索引失效情况

本文整理了 MySQL InnoDB 存储引擎中,常见导致索引失效的原因。

MySQL 是否使用索引通常取决于优化器估算的结果,如果计算结果认为全表扫描比使用索引还快,那通常就使用全表扫描。

以下两大类查询语句会导致查询就算走索引也需要对结果进行处理,最终优化器不会使用索引进行查询:

  1. 违反最左匹配原则
  2. 索引列上面做操作
阅读更多

MySQL 索引使用的原则

在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。

Innodb 存储引擎的 B-Tree 索引使用的存储结构实际上是 B+Tree。本文总结的几个索引使用原则主要基于 Innodb 存储引擎,原理便是依托于 B+ 树的特性。

阅读更多

事务的特性和隔离级别

数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。事务的使用是数据库管理系统区别文件系统的重要特征之一。

阅读更多

在 PostgreSQL 中删除 DB 时报资源占用

一次性删除数据库中数据最快的方法就是直接 Drop 掉 DB,重新建一个,但是在 Drop 时可能会报占用的错误。

1
There is 1 other session using the database.

出现上诉错误时可以用以下方法解决,方法来自 stackoverflow。

阅读更多

Postgresql 中新增用户、数据库和授权

本文介绍如何快速在 PostgreSQL 中新建 DB 和用户并完成授权,简要如下,详细说明请看详情页。

TL;DR

1
2
3
4
sudo -u postgres psql
postgres=# create database mydb;
postgres=# create user myuser with encrypted password 'mypass';
postgres=# grant all privileges on database mydb to myuser;
阅读更多