1、对于千万级别的表,如果索引用得不合适的话,查询是非常慢的;
反之,如果索引用得比较合适的合适的话,查询是非常快的。
2、对索引的理解
1)大学时老师的比喻:把索引比作一本教科书前面的目录页;
该解释还是比较浅薄的,好像听完之后还是不知道索引是个啥?
2)进一步理解:索引是帮助MySQL高效获取数据的已经排好序了的数据结构;
索引数据结构:
二叉树
红黑树
Hash表
B-Tree
3、举例
对于查询一张有两个字段(Col1、Col2)的table:
SELECT * FROM t WHERE col2 = 89
1)对于MySQL底层来说,会逐行去查找和比对Col2的数值
2)可以为Col2字段中的值建立一个索引,图中假设用二叉树这种数据结构去存储Col2的值,这棵二叉树就称为一个索引;
3)第一种办法,查询到Col2=89的记录需要进行6次比对;
第二种办法,查询到Col2=89的记录需要进行2次比对。