sql事务、视图和索引

简介: sql事务、视图和索引

一、事务:

  1.概念:是单个逻辑单元执行的一系列操作(一个事务中有多个sql语句),这个操作作为一个整体一起提交,要么执行,要么都不执行,多个事务操作是一个不可分割的逻辑单元。

  2.事务的特性:

    (1)原子性(A):一个事务中的所有的操作不可再分割,保持原子性,他们要么都执行,要么都不执行。

    (2)一致性(C):数据保持一致

    (3)隔离性(I):并发事务(多个事务)之间相互独立、隔离

    (4)永久性(D):事务完成之后,数据永久有效

  3.事务的使用:

     (1)开始事务 begin transaction(将一个业务的操作包含在开始事务中)

     (2)提交事务 commit transaction(如果所有的事务都没有错误,提交事务)

     (3)回滚事务 rollback transaction(如果有一个错误的话,回滚事务)

  4.事务分类:

     (1)显示事务:用begin transaction 开始的事务,最常用的

     (2)隐士事务:打开隐士事务之后,系统自动控制事务

     (3)自动提交事务,用于单条sql语句中

二、视图

  1.概念:是一个虚拟表,包含单个表的部分数据或多个表的总和数据组成的虚表,他的结构和数据是基于对数据表的查询基础上。

   注:(1)视图不存储数据,实际数据存储在数据表中

       (2)一个数据库表可以创建多个视图

  2.视图的作用:

       (1)筛选数据行

       (2)保护敏感数据

       (3)降低数据库的复杂度

       (4)将多个物理数据库抽象为一个逻辑数据库

  3.创建视图的注意事项:

       (1)select 语句不能包含order by

       (2)不能有into

       (3)不引用临时表或表变量

 4.创建视图:

      create view 视图名 as select 语句

 5.删除视图: drop view 视图名

三、索引

  1.索引的概念:数据库中编排数据的内部方法

  2.索引页的概念:数据库存放索引数据的一种方式

  3.作用:提高数据库的检索速度,改善数据的性能  

  4.分类:

    (1)唯一索引:不允许有重复的行数据,不允许为null

    (2)主键索引:特殊的唯一索引,不允许有null

    (3)聚集索引:索引顺序和数据物理存放顺序一致

    (4)非聚集索引:索引顺序和物理存放顺序不一致

  5.创建索引的原则:

    (1)在频繁搜索的列上

    (2)经常查询的列

    (3)经常排序和分组的列

    (4)进行连接的列(主键和外键)

    (5)在小字节的列上

  6.不推荐创建索引:

    (1)只有少量几个值得列上

    (2)只有几行数据的表上

    (3)在大字段上

  7.使用索引的注意事项:

    (1)查询中尽量不要用*

    (2)where后有多个条件的时候,有索引的放在前面

    (3)order by后尽量不要用表达式

    (4)定期的对索引页进行碎片整理

  8.创建和删除索引

    create index 索引名 on 表名(列名)

     drop index 表名.索引名

相关文章
|
12月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
SQL 存储 关系型数据库
SQL优化策略与实践:组合索引与最左前缀原则详解
本文介绍了SQL优化的多种方式,包括优化查询语句(避免使用SELECT *、减少数据处理量)、使用索引(创建合适索引类型)、查询缓存、优化表结构、使用存储过程和触发器、批量处理以及分析和监控数据库性能。同时,文章详细讲解了组合索引的概念及其最左前缀原则,即MySQL从索引的最左列开始匹配条件,若跳过最左列,则索引失效。通过示例代码,展示了如何在实际场景中应用这些优化策略,以提高数据库查询效率和系统响应速度。
778 10
|
SQL 索引
【YashanDB知识库】字段加上索引后,SQL查询不到结果
【YashanDB知识库】字段加上索引后,SQL查询不到结果
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
657 2
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
394 3
|
SQL 存储 关系型数据库
SQL默认索引是什么:深入解析与技巧
在SQL数据库中,索引是一种用于提高查询性能的重要数据结构
|
SQL Go 数据库
SQLSERVER中如何忽略索引提示
原文:SQLSERVER中如何忽略索引提示 SQLSERVER中如何忽略索引提示 当我们想让某条查询语句利用某个索引的时候,我们一般会在查询语句里加索引提示,就像这样 SELECT id,name from TB with (index(IX_xttrace_bal)) where ba...
1241 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
994 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
677 9