From 301a51ef514c43402723b6fdb9332de3829b2906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=B0=E5=8D=8E?= <3254757072@qq.com> Date: Wed, 14 Sep 2022 23:07:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...06\351\241\265\346\237\245\350\257\242.md" | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 "25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.14 \347\264\242\345\274\225 \345\210\206\351\241\265\346\237\245\350\257\242.md" diff --git "a/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.14 \347\264\242\345\274\225 \345\210\206\351\241\265\346\237\245\350\257\242.md" "b/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.14 \347\264\242\345\274\225 \345\210\206\351\241\265\346\237\245\350\257\242.md" new file mode 100644 index 0000000..fe2f042 --- /dev/null +++ "b/25\346\235\250\344\270\260\345\215\216/\347\254\224\350\256\260/9.14 \347\264\242\345\274\225 \345\210\206\351\241\265\346\237\245\350\257\242.md" @@ -0,0 +1,77 @@ +### 一、索引 + +##### 1、索引概念 + +索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的特殊数据库结构,它是某个表中一列或若干列值的[集合](https://so.csdn.net/so/search?q=集合&spm=1001.2101.3001.7020)和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到需要的内容。 + + + +##### 2、索引分类 + +聚集索引:根据数据行的键值在表或视图中的排序存储这些数据行,每个表只有一个聚集索引。聚集索引是一种对磁盘上实际数据重新组织以按指定的一列或多列值排序(类似字典中的拼音索引)(物理存储顺序)。 + +非聚集索引 :具有独立于数据行的结构,包含非聚集索引键值,且每个键值项都有指向包含该键值的数据行的指针。(类似字典中的偏旁部首索引)(逻辑存储顺序)。 + +##### 3、索引的创建 + +语法: + +``` +create index (索引名 IDX_***) +on 表名(列名) +``` + +##### 4、索引的使用 + +格式: + +``` +select * from 表名 +with (index=索引名) +where 条件 +``` + +##### 5、索引的删除 + +格式: + +``` +drop index 索引名 on 列名 +``` + +##### 6、查看索引 + +``` +查看整个的索引: +exec sp_helpindex 列名 +``` + +### 二、分页查询 + +##### 1、row_number() over (order by) + +``` +select row_number over(order by 所根据的列名 desc) from 表名 +``` + +在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。 + +ROW_NUMBER() OVER(ORDER BY 字段1 DESC)是先把字段1降序,再为降序以后的每条记录返回一个序号 + +##### 2、row_number() over (partition by) + +ROW_NUMBER() OVER(PARTITION BY 字段1 ORDER BY 字段2 DESC)表示根据字段1分组,在分组内部根据字段2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。 + +##### 3、rank + +采用 RANK()排序,最大序号也为数据的行总数,但是跳过了相同的,简而言之就是序号不连续; + +``` +select rank() over(order by 根据分组的列名 desc) from 表名 +``` + + + +##### 4、dense_rank() + +采用DENSE_RANK()排序,则是序号连续,但是有并列。 \ No newline at end of file -- Gitee