一,索引的概念:
索引是高效获取数据的数据结构,用来提高检索效率
二,索引结构:
(1),B+ tree(默认):B+树是B树的变种,它的特点是所有的数据都存储在叶子节点中,并且叶子节点之间通过指针相连,形成了一个有序链表。这种结构使得B+树在进行范围查询时更加高效。
(2),Hash:哈希索引本质是采用了一定的哈希算法,将键值换成新的哈希值,映射到对应的槽位上,然后存储在哈希表中
三,索引分类:
主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引
唯一索引:不允许具有索引值相同的行,从而禁止重复的索引或键值。
常规索引:最基本的索引类型,没有唯一性之类的限制。
全文索引:搜索引擎的关键技术,用于检索文本信息,可以是词语或者段落。
聚集索引:聚集索引决定了表中数据的物理存储顺序。在聚集索引中,数据行的物理顺序与索引键值的逻辑顺序是一致的。这意味着,聚集索引的叶节点直接存储了数据行本身。由于这种存储方式,一个表只能有一个聚集索引,因为数据不能同时按照两个不同的顺序进行物理存储。在SQL Server中,默认情况下主键会被创建为聚集索引,而在MySQL中,主键本身就是聚集索引。
二级索引:与聚集索引不同,非聚集索引中数据行的物理存储顺序与索引键值的逻辑顺序不一致。非聚集索引的叶节点包含索引键值和指向数据行的指针,而不是数据行本身。这意味着,使用非聚集索引进行查询时,可能需要进行两次查找:首先在索引中查找到键值,然后通过指针查找到数据行。一个表可以有多个非聚集索引,因为它们不影响数据的物理存储顺序。
四,常见的索引语法:
展示所有:show index from xxx;
删除索引:drop index xxx on xxx;
五,SQL性能分析:
执行频次,慢查询日志,profile(监控耗时),explain
六,索引使用:
联合索引
索引失效
SQL提示
覆盖索引
前缀索引
单列/联合索引
七,索引设计原则: