一、视图
1.1 概念: 视图就是封装了一条复杂查询的语句。
1.2 语法:
CREATE VIEW 视图名称 AS 子查询
CREATE OR REPLACE VIEW 视图名称 AS 子查询:如果视图已经存在我们可以使用语法 2 来创建视图,这样已有的视图会被覆盖。
2024年10月06日
一、视图
1.1 概念: 视图就是封装了一条复杂查询的语句。
1.2 语法:
CREATE VIEW 视图名称 AS 子查询
CREATE OR REPLACE VIEW 视图名称 AS 子查询:如果视图已经存在我们可以使用语法 2 来创建视图,这样已有的视图会被覆盖。
2024年10月06日
本篇主要介绍 MySQL 的函数索引(也叫表达式索引)。
通常来讲,索引都是基于字段本身或者字段前缀(第 20 篇),而函数索引是基于字段本身加上函数、操作符、表达式等计算而来。如果将表达式或者操作符也看做函数的话,简单来说,这样的索引就可以统称函数索引。
MySQL 的函数索引内部是基于虚拟列(generated columns)实现,不同于直接定义虚拟列,函数索引自动创建的虚拟列本身实时计算结果,并不存储数据,只把函数索引本身存在磁盘上。
2024年10月06日
在实际测试过程中对产品进行性能分析时,经常发现因缺少索引导致上层业务性能出现问题,甚至有的表一个索引都没有。
这种情况往往都是因为在设计表时,没有根据实际业务应用、数据体量等进行分析、设计。同时由于在产品开发阶段,由于开发、测试环节数据量少,索引的创建与否对于性能的影响并不明显,容易忽略其中性能风险。然而一旦发布到生产环境,随着时间推移,数据量、用户基数不断增加,暴露性能问题的风险也逐渐增大。
同时,索引创建并且用到了索引字段,但并不意味着真正使用了索引,本文主要从如何避免索引失效的角度,介绍SQL性能优化。
2024年10月06日
PostgreSQL 提供 CREATE 命令,用于创建表和自定义数据类型。 CREATE 命令允许您定义表结构,并指定表中列的名称、数据类型和约束条件。
CREATE 命令语法
```sql
CREATE TABLE table_name (
column_name data_type [NOT NULL] [DEFAULT value] [PRIMARY KEY],
2024年10月06日
实践中如何优化MySQL
实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化和硬件的优化四个方面,如下图所示:
SQL语句及索引的优化
SQL语句的优化
SQL语句的优化主要包括三个问题,即如何发现有问题的SQL、如何分析SQL的执行计划以及如何优化SQL,下面将逐一解释。
2024年10月06日
为什么要分库分表和读写分离?
类似淘宝网这样的网站,海量数据的存储和访问成为了系统设计的瓶颈问题,日益增长的业务数据,无疑对数据库造成了相当大的负载,同时对于系统的稳定性和扩展性提出很高的要求。随着时间和业务的发展,数据库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作的开销也会越来越大;另外,无论怎样升级硬件资源,单台服务器的资源(CPU、磁盘、内存、网络IO、事务数、连接数)总是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。分表、分库和读写分离可以有效地减小单台数据库的压力。
2024年10月06日
PostgreSQL 提供多种索引类型,以提高性能和效率。索引是一种数据结构,用于快速查找和访问表中的数据。
创建索引
* 索引可以为任何非 NULL 字段创建。
* 可以为多个字段创建多个索引。
索引类型
* B 树索引:用于排序值和排序的非唯一值。
2024年10月06日
索引有各种类型,除了标准索引外,还有一些特殊类型的索引:
创建标准索引
2024年10月06日
全文检索并没有你想象中的难,创建全文检索的核心思路是:初始化索引环境,为表字段创建索引,通过分词处理搜索文本,匹配索引中的词汇与记录行,最后根据匹配结果构建并返回相关数据。
2024年10月06日
复合索引顾名思义,区别于单列索引,是由两个或多个列一起构成的索引。其在B树上的数据结构是什么样?如下图,是一个包含两列的复合索引。
如果你观察仔细,还会发现它的叶子节点是ASC递增排序的。现根据第一个值排序,然后根据第二个值排序。查的时候也一样,先查第一个值,在查第二个值。可以想象三个列组成的复合索引数据结构该是什么样的。
在实际创建表时,一开始,只会创建一个主键id,oracle会为主键默认创建索引。随着经验的增加,开始去考虑性能,会开始研究索引,比如查询报表、订单等业务场景。这时候多多少少都会创建索引了,然后开始研究复合索引。复合索引首先带来的问题是你如何在脑海中构建一个B树上的复合索引结构?接下来就到了如何创建复合索引的问题。