覆盖索引和索引下推的区别,用表格进行对比
时间: 2023-07-11 13:31:07 浏览: 50
好的,下面是覆盖索引和索引下推的区别表格:
| 区别 | 覆盖索引 | 索引下推 |
| -------- | -------------------------------------------------- | ------------------------------------------------------------ |
| 查询方式 | 直接在索引中查找所需数据 | 在索引中查找符合条件的主键,再回到原表中查询其他数据 |
| 查询效率 | 比索引下推更高效,因为无需回到原表中查询数据 | 次于覆盖索引,因为需要回到原表中查询其他数据 |
| 适用场景 | 查询的字段在索引中都有,并且查询数据量较大时使用 | 查询的字段在索引中只有部分或没有,查询数据量较小时使用 |
| 索引大小 | 索引大小会增大,因为需要将查询的字段都加入到索引中 | 索引大小会减小,因为只需要对查询字段建立索引即可,无需将其他字段加入索引 |
希望这个表格能够帮助您更好地理解覆盖索引和索引下推的区别。
相关问题
什么是覆盖索引和索引下推,用表格形式对比
好的,下面是覆盖索引和索引下推的表格形式对比:
假设有以下的表结构:
| id | name | age | gender | address |
| --- | --- | --- | --- | --- |
| 1 | Amy | 20 | Female | Beijing |
| 2 | Bob | 25 | Male | Shanghai|
| 3 | Cindy| 30 | Female | Guangzhou|
现在有以下的查询语句:
SELECT id, name, age FROM table WHERE gender='Female';
假设我们对 gender 列建立了非聚集索引,那么使用覆盖索引和索引下推的查询过程如下:
| 查询方式 | 查询过程 |
| -------- | ---------------------------------------------------------------- |
| 覆盖索引 | 在非聚集索引中查找符合条件的 id, name 和 age 列,无需回到原表中查询 |
| 索引下推 | 在非聚集索引中查找符合条件的 id,再回到原表中查询 name 和 age 列 |
下面是查询过程的具体表格形式:
1. 覆盖索引查询:
直接在非聚集索引中查找符合条件的 id, name 和 age 列,无需回到原表中查询。
| id | name | age |
| --- | --- | --- |
| 1 | Amy | 20 |
| 3 | Cindy| 30 |
2. 索引下推查询:
在非聚集索引中查找符合条件的 id,再回到原表中查询 name 和 age 列。
| id | name | age |
| --- | --- | --- |
| 1 | Amy | 20 |
| 3 | Cindy| 30 |
下面是索引下推查询的具体过程,可以看到查询过程中需要回到原表中查询 name 和 age 列。
| id | name | age | gender |
| --- | --- | --- | --- |
| 1 | Amy | 20 | Female |
| 2 | Bob | 25 | Male |
| 3 | Cindy| 30 | Female|
| gender | id |
| --- | --- |
| Female | 1 |
| Female | 3 |
阅读全文