索引可以理解为一本书的目录,也是占页数,占存储空间的。key(关键字)-value(磁盘地址或行记录)。
根据关键字去索引里面查,数据结构是B+数,查询速度快。
哈希冲突: 通过key(k1,k2)的hashcode()获取哈希值,经过算法取得在数组上得下标位置,2个key取到了同一个下标,这就是哈希冲突。
拉链发解决:将key2的数据放在链表上。
树:
二叉树:最多只有2个节点。 极端情况下可能会是一个链表。
而且B+树的叶子节点是有指针的,比如你要查询比5大的,定位到0005之后往后遍历即可
情景一:假设MySQL表中字段设定索引,且查询过程中走了聚簇索引,那么此时查询就会直接通过聚簇索引找出对应的行记录。
情景二:假设MySQL表中字段设定索引,但是查询过程中未走聚簇索引,那么此时查询过程中,首先需要通过非聚簇索引找到对应的聚簇索引,然后才能通过聚簇索引找到对应的行记录。
通过情景二可以看到,即使走普通索引,也还是需要再回到聚簇索引查询一次表数据,这个过程称为回表。
回表会降低查询效率。
尽量使用聚簇索引,或者复合索引。
慢查询:
默认10秒
cmd或者客户端 执行命令查看慢查询的相关信息,可以自己进行修改 慢查询的时间(执行超过这个时间的查询语句会存放进去),以及日志存放的位置。。。。。
然后在用explain 来查看执行计划。
标签:key,博学,聚簇,查询,链表,索引,哈希,mysql,优化 From: https://www.cnblogs.com/zhangdongdong1/p/16702923.html