SQL Server 索引和视图

CSDN 成就一亿技术人!

难度指数:* * *

CSDN 成就一亿技术人!


目录

1.索引

什么是索引?

索引的作用?

索引的分类

[1. 唯一索引](#1. 唯一索引)

[2. 主键索引](#2. 主键索引)

[3. 聚集索引](#3. 聚集索引)

4.非聚集索引

5.复合索引

6.全文搜索

索引的创建(命令+图形)

[2. 视图](#2. 视图)

创建视图

查询视图

更新视图

删除视图

实例


1.索引

什么是索引?

索引(Index)是数据库中一种用于加速对表中数据的检索速度的数据结构。索引类似于书籍的目录,它提供了一种快速查找数据行的方法,避免了全表扫描的开销。通过使用索引,数据库系统可以直接定位到符合特定搜索条件的数据,而不必逐行遍历整个表。

索引的作用?

  • 减少数据库搜索引擎需要扫描的数据量。
  • 帮助数据库搜索引擎更快地找到与查询条件匹配的数据行。
  • 允许数据库搜索引擎使用更有效的算法来查找数据行。

索引的分类

1. 唯一索引

确保索引列的所有值都是唯一的,用于实现唯一性约束

CREATE UNIQUE INDEX index_name on 表名 (列1,列2.....);

2. 主键索引

主键索引是表中唯一的索引,它用于指定表的主键。主键索引可以提高查询的效率,但会增加数据库的空间占用

创建主键索引的注意事项

  • 主键索引的列必须是唯一的。
  • 主键索引的列不能为 NULL。
  • 主键索引的列不能包含重复值。

ALTER TABLE table_name
ADD CONSTRAINT pk_constraint_name PRIMARY KEY (column1, column2, ...);

  • table_name 是表的名称。
  • pk_constraint_name 是你为主键约束指定的名称。
  • (column1, column2, ...) 是主键包含的列的列表。

3. 聚集索引

数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同

一个表中只能包含一个聚集索引

CREATE CLUSTERED INDEX index_name
ON table_name (column1, column2, ...);

  • index_name 是你为索引指定的名称。
  • table_name 是要在其上创建索引的表的名称。
  • (column1, column2, ...) 是用于聚集索引的列的列表。

4.非聚集索引

与聚集索引不同,非聚集索引的叶子节点并不包含实际的数据行,而是包含指向实际数据行的指针。一个表可以有多个非聚集索引。

CREATE NONCLUSTERED INDEX index_name
ON table_name (column1, column2, ...);

  • index_name 是你为索引指定的名称。
  • table_name 是要在其上创建索引的表的名称。
  • (column1, column2, ...) 是用于非聚集索引的列的列表。

5.复合索引

包含多个列的索引,以提高特定查询的性能,复合索引的顺序通常取决于查询中使用的列的顺序。

CREATE INDEX index_name
ON table_name (column1, column2, ...);

  • index_name 是你为索引指定的名称。
  • table_name 是要在其上创建索引的表的名称。
  • (column1, column2, ...) 是用于复合索引的列的列表。

6.全文搜索

一种用于在文本数据中进行高效搜索的技术,允许用户以自然语言的方式查询文本数据。在 SQL Server 中,可以使用全文搜索功能进行这样的操作。

这个自行了解

索引的创建(命令+图形)

命令

这边创建一个唯一索引 当做实例

图形

右击表 点击设计

右击列 点击 索引即可

此刻我们发现命令创建的索引成功

2. 视图

  • 可以简化查询。 视图可以将复杂的查询转换为简单的查询,使查询更加容易理解和使用
  • 简化查询

创建视图

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table1
WHERE condition;

  • view_name 是视图的名称。
  • column1, column2, ... 是视图中包含的列。
  • table1 是表。
  • WHERE condition 是可选的筛选条件。

查询视图

SELECT * FROM youView;

更新视图

UPDATE youView
SET FirstName = 'NewName'
WHERE 条件;

删除视图

DROP VIEW view_name;

实例

创建视图

这里红色(错误语法) 但是可以执行

更新视图

查询视图

更新后的信息

删除视图

再次查询一遍发现无效

相关推荐
Elastic 中国社区官方博客4 分钟前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
企鹅侠客9 分钟前
ETCD调优
数据库·etcd
Json_1817901448015 分钟前
电商拍立淘按图搜索API接口系列,文档说明参考
前端·数据库
煎饼小狗26 分钟前
Redis五大基本类型——Zset有序集合命令详解(命令用法详解+思维导图详解)
数据库·redis·缓存
永乐春秋43 分钟前
WEB-通用漏洞&SQL注入&CTF&二次&堆叠&DNS带外
数据库·sql
打鱼又晒网1 小时前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!1 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix2 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。2 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了2 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite