From a58eec3d34b2458986717d9faeb9450313300f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=96=E6=9D=B0=E6=9E=97?= <2890111060@qq.com> Date: Mon, 19 Sep 2022 08:53:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2022-9-14. \347\264\242\345\274\225.md" | 77 +++++++++++++++++++ .../2022-9-15. \350\247\206\345\233\276.md" | 27 +++++++ 2 files changed, 104 insertions(+) create mode 100644 "46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-14. \347\264\242\345\274\225.md" create mode 100644 "46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-15. \350\247\206\345\233\276.md" diff --git "a/46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-14. \347\264\242\345\274\225.md" "b/46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-14. \347\264\242\345\274\225.md" new file mode 100644 index 0000000..0fbbe9f --- /dev/null +++ "b/46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-14. \347\264\242\345\274\225.md" @@ -0,0 +1,77 @@ +#### 索引分类 + +**索引主要分为两类**: + +**聚集索引(clustered)**: + +根据数据行的键值在表或视图中的排序存储这些数据行,每个表只有一个聚集索引。聚集索引是一种对磁盘上实际数据重新组织以按指定的一列或多列值排序(类似字典中的拼音索引)(物理存储顺序)。 + +**非聚集索引 (nonclusterted)**: + +具有独立于数据行的结构,包含非聚集索引键值,且每个键值项都有指向包含该键值的数据行的指针。(类似字典中的偏旁部首索引)(逻辑存储顺序)。 + +### 排序函数 + +- ROW_NUMBER函数—————连续跳连 +- RANK函数——————不连续跳连 +- DENSE_RANK函数 + +**其它类型的索引**: + +- 按照数据唯一性分类:唯一索引、非唯一索引 +- 按键列个数区分:单列索引,多列索引 + +- 其他分类:索引视图、包含性列索引、全文索引、XML索引等 + +#### 索引的创建与使用 + +索引的创建 + +```sql +--01创建索引基本语法 +CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] +INDEX ON ( [ASC|DESC][,...n]) + +--练习:为DBSTUDENT创建score字段索引 + +--练习:查找姓名为MikeSullivan、年龄17岁用户的peopleid +--分别使用单列索引和多列索引 +``` + +```sql +创建索引基本语法 +CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] +INDEX ON
( [ASC|DESC][,...n]) +——create index(索引名) on 表名(字段) +``` + +索引的使用 + +```sql +使用索引基本语法 + +select * from 表名 with(index = 索引名) where... +``` + +索引的删除 + +```sql +删除索引 + +drop index 索引名 on 表名 + +--04查看该表有多少索引 + +exec sp_helpindex 表名 +``` + +使用索引的注意事项 + +- 使用聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置。 +- 非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。 +- 不是所有的表都适合建立索引,只有数据量大表才适合建立索引,且建立在选择性高的列上面性能会更好 +- 在where后使用or,导致索引失效(尽量少用or) +- 使用like ,like查询是以%开头,以%结尾不会失效 +- 不符合最左原则(多列索引) +- 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引 +- 使用in导致索引失效 \ No newline at end of file diff --git "a/46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-15. \350\247\206\345\233\276.md" "b/46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-15. \350\247\206\345\233\276.md" new file mode 100644 index 0000000..d44837b --- /dev/null +++ "b/46\350\265\226\346\235\260\346\236\227/\347\254\224\350\256\260/2022-9-15. \350\247\206\345\233\276.md" @@ -0,0 +1,27 @@ +#### 创建视图 + +create view 视图名字(字段别名,字段别名,....) +as +(select 字段,字段,字段 from 表名 where 可加条件或是不加) +with check option + +#### 查看视图结果 + +​ select * from 视图名字 + +#### 删除视图 + +​ drop view 视图名字 + +#### 视图作用 + +​ 1.聚焦特定数据:使用户只能看到和操作与他们有关的数据,提高了数据的安全性。 +​ 2.简化数据操作:使用户不必写复杂的查询语句就可对数据进行操作。 +​ 3.定制用户数据:使不同水平的用户能以不同的方式看到不同的数据。 +​ 4.合并分离数据:视图可以从水平和垂直方向上分割数据,但原数据库的结构保持不变。 + +#### 视图在SQL中可以分为三类 + +​ 普通视图(Regular View) +​ 索引视图(Indexed View) +​ 分割视图(Partitioned View) \ No newline at end of file -- Gitee