2月13日
索引分类:
- 按数据结构分类:
- B - 树索引:是平衡的多路搜索树,节点存储索引键值和指针。特点是查询时间复杂度稳定在对数级别,常用于范围和等值查询。适用于各类查询,尤其是范围查找场景。
- B + 树索引:B - 树变体,非叶子节点只存索引键值,数据存于叶子节点且叶子节点用指针相连。更适合范围查询,提高了查询效率。是数据库常用索引结构,如MySQL的InnoDB存储引擎使用。
- 哈希索引:用哈希函数将索引键值转为哈希码定位数据行。查找速度快,时间复杂度O(1),适用于等值查询,但不支持范围查询。适用于快速等值匹配场景,如缓存系统键值查找。
- 按物理存储分类:
- 聚集索引:决定表中数据物理存储顺序,一个表只能有一个。查询效率高,范围查询和排序快,但插入、删除和更新可能导致数据物理移动,开销大。常将主键设为聚集索引,适用于常进行范围查询和排序的表。
- 非聚集索引:不改变数据物理存储顺序,单独创建索引结构存储索引键值和指针,一个表可有多 个。创建和维护成本低,对插入、删除和更新影响小,但查询可能需二次查找。适用于常进行特定列查询,无需对整个表排序的场景。
- 按逻辑功能分类:
- 唯一索引:要求索引列值唯一,可聚集或非聚集。保证数据唯一性,提高查询效率。用于需保证数据唯一性的列,如用户名、身份证号等。
- 复合索引:由多个列组成,数据库根据列组合排序和存储索引数据。可提高多列查询效率,减少索引数量,但要注意索引列顺序。适用于常同时根据多列查询的场景。
- 全文索引:用于文本数据全文搜索,对文本分词建立索引。可快速定位含特定关键词的文本,支持模糊和语义查询。创建和维护成本高,占用存储空间多。适用于需全文搜索的场景,如新闻、商品描述搜索。
常见聚合函数及示例
COUNT:计算行数
-- 总行数
SELECT COUNT(*) FROM TableName;
-- 某列非空行数
SELECT COUNT(ColumnName) FROM TableName WHERE ColumnName IS NOT NULL;
SUM:计算数值总和
SELECT SUM(ColumnName) FROM TableName;
AVG:计算数值平均值
SELECT AVG(ColumnName) FROM TableName;
MAX:找出最大值
SELECT MAX(ColumnName) FROM TableName;
MIN:找出最小值
SELECT MIN(ColumnName) FROM TableName;

浙公网安备 33010602011771号