如何理解网站内容的走索引过程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1145个文字,预计阅读时间需要5分钟。
索引是一种利用特定规则组织数据的结构,它能够快速定位实际数据。在我们的数据库中,存储了大量的信息,而索引则通过数据节点,根据特定的规则和算法,迅速找到对应的数据点。
索引是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能。我们的数据库中存储有大量的内容,而索引能够通过数据节点,根据特定的规则和算法快速查找到节点对应的实际文件的位置。简单来说索引就像书的目录,能够帮助我们准确定位到书籍具体的内容。
最近在学习索引的时候遇到了一个问题,下面我们通过重现的方式来看一下。
首先建立一个如下测试表:
CREATE TABLE `simple_table` (
`id` int NOT NULL AUTO_INCREMENT,
`c1` datetime DEFAULT NULL,
`c2` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `c2__idx` (`c2`),
KEY `fun_c1_idx` ((cast(`c1` as date)))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
fun_c1_idx: 是mysql8开始支持的函数索引
然后往这个表里随机插入1000 条数据。
select * from simple_table where date(c2) = '2022-01-01';
可以看到上面的这条 SQL 语句不能走索引。因为索引树中存储的是列的实际值和主键值,所以对条件字段做函数操作是会让索引失效的。
本文共计1145个文字,预计阅读时间需要5分钟。
索引是一种利用特定规则组织数据的结构,它能够快速定位实际数据。在我们的数据库中,存储了大量的信息,而索引则通过数据节点,根据特定的规则和算法,迅速找到对应的数据点。
索引是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能。我们的数据库中存储有大量的内容,而索引能够通过数据节点,根据特定的规则和算法快速查找到节点对应的实际文件的位置。简单来说索引就像书的目录,能够帮助我们准确定位到书籍具体的内容。
最近在学习索引的时候遇到了一个问题,下面我们通过重现的方式来看一下。
首先建立一个如下测试表:
CREATE TABLE `simple_table` (
`id` int NOT NULL AUTO_INCREMENT,
`c1` datetime DEFAULT NULL,
`c2` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `c2__idx` (`c2`),
KEY `fun_c1_idx` ((cast(`c1` as date)))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
fun_c1_idx: 是mysql8开始支持的函数索引
然后往这个表里随机插入1000 条数据。
select * from simple_table where date(c2) = '2022-01-01';
可以看到上面的这条 SQL 语句不能走索引。因为索引树中存储的是列的实际值和主键值,所以对条件字段做函数操作是会让索引失效的。

