索引的概念:
① 如果把数据表比作一本书,那么表的索引就是这本书的目录。可见,索引使用户能快速访问数据表的特定信息。
② 索引包括两项:索引字段值、原记录号
③ 索引必须依附于某个基本表,不能单独存在。
索引的类型(重点):
①聚集索引:影响数据表的记录顺序
数据行的物理顺序与列值(一般是主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引
索引的叶子节点就是对应的数据节点,可以直接获取到对应的全部列的数据,而非聚集索引在索引没有覆盖到对应的列的时候需要进行二次查询,后面会详细讲。因此在查询方面,聚集索引的速度往往会更占优势。
②非聚集索引:不会影响数据表的记录顺序
该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同
注:一个表只能建立一个聚集索引,但可以建立若干个非聚集索引。
非聚集索引叶节点仍然是索引节点,只是有一个指针指向对应的数据块,此如果使用非聚集索引查询,而查询列中包含了其他该索引没有覆盖的列,那么他还要进行第二次的查询,查询节点上对应的数据行的数据。
总结:索引是通过二叉树的形式进行描述的,我们可以这样区分聚集与非聚集索引的区别:聚集索引的叶节点就是最终的数据节点,而非聚集索引的叶节仍然是索引节点,但它有一个指向最终数据的指针。
建立索引的目的:加快查询速度
建立索引
如果不创建索引,系统默认主键为聚集索引(Mysql)