Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

05 | 深入浅出索引(下) #13

Open
git-zjx opened this issue Jul 19, 2019 · 0 comments

Comments

@git-zjx
Copy link
Owner

commented Jul 19, 2019

覆盖索引

如果索引覆盖了查询的需求,就叫覆盖索引,减少了树的搜索次数,避免了回表,能显著提升性能

最左前缀原则

只要满足索引的最左前缀,就可以使用该索引,这个最左前缀可以是联合索引的前 N 个字段,也可以是字符串索引的前 N 个字符

在建立联合索引时,如何安排索引的顺序?

  • 如果通过调整顺序可以减少索引的数量,优先考虑
  • 如果不得不维护另一个索引,则需要考虑空间,选择空间小的单独维护

索引下推

MySQL 5.6 引入索引下推优化(index condition pushdown),可以在索引遍历过程中,对索引包含的字段先判断,直接过滤不满足条件的数据,减少回表次数

问题

  1. 树高取决于数据页的大小么?
    树高其实取决于叶子树(数据行数)和“N叉树”的N。 而N是由页大小和索引大小决定的
  2. 关于用索引?
    “用索引”有一种用法是 “顺序扫描索引”
  3. 覆盖索引必须要覆盖所有的查询条件中的列吗?
    因为覆盖索引的目的就是”不回表“,所以只有索引包含了 where 条件部分和 select 返回部分的所有字段,才能实现这个目的

@git-zjx git-zjx added this to MySQL实战45讲 in MySQL Jul 19, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
1 participant
You can’t perform that action at this time.