维克多阿涛
2022-04-06 阅读量: 86
索引的结构
索引是在存储引擎中实现的,使用不同的存储引擎,所支持的索引也是不同的。
在mysql中常用两种索引结构BTree和Hash,两种算法检索方式不一样,对查询的作用也不一样。
MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。
MySQL的InnoDB存储引擎是支持hash索引的,不过我们必须启用,hash索引的创建由InnoDB存储引擎自动优化创建,我们干预不了。
首先我们应该熟悉什么聚合函数(又名聚集函数):例如MIN(),Max(),SUM(),COUNT(),AVG() 这类的,我们称作是聚合函数。那么我们不能在where子句中使用这些函数,为什么呢?聚合函数也叫列函数,它们都是基于整列数据进行计算的,而where子句则是对数据行进行过滤的(这里过滤是在一个记录里边过滤的,基于"行"),更简单地说,因为聚集函数要对全列数据时行计算,因而使用它的前提是:
数据库:是OLTP(联机事务处理)应用的场景,其存储的主要是与业务直接相关的数据,强调准确、低时延、高并发,如果没有特别强调,基本上数据库里只会去存储与业务相关的数据。数据仓库:OLAP(联机分析处理)是数据仓库系统的主要应用,其支持的对象只要是面向分析场景的应用,提供结构化的、主题化的数据提供给运营,做业务反馈和辅助决策用,同时,有些场景下,也可以由数据仓库对业务进行支持。
数据库中关于完整性约束有以下几类:主键约束 primary key外键约束 foreign key唯一约束 unique非空约束 not null检查约束 check默认约束 default自动增长约束 auto_increment
Mysql语句的执行顺序