中文网站数量,jsp和php哪个做网站快,做信息发布类网站,电子商务网站建设情况一、什么是索引 索引是一种数据结构#xff0c;它用来帮助MYSQL更高效的获取数据 采用索引可以提高数据检索的效率#xff0c;降低IO成本 通过索引对数据排序#xff0c;降低数据排序成本#xff0c;降低CPU消耗 常见的有#xff1a;B树索引、B树索引、哈希索引。其中Inno…一、什么是索引 索引是一种数据结构它用来帮助MYSQL更高效的获取数据 采用索引可以提高数据检索的效率降低IO成本 通过索引对数据排序降低数据排序成本降低CPU消耗 常见的有B树索引、B树索引、哈希索引。其中InnoDB引擎采用的是B数索引 二、索引的底层是什么 MYSQL默认使用InnoDB存储引擎 在InnoDB下的索引底层采用B树数据结构存储引擎。 选用B树主要有三个原因 B树对比B树更“矮胖”阶数少路径低其扫描效率更高B树的读写代价低非叶子节点只存放指针叶子节点存放数据。mysql一页的大小是固定16kb的对比B树的节点同时存放指针和数据它可以存放更多的指针一次性读取的数据量更多。B树的叶子节点通过双向链表维护范围查找、排序查找、区间查找能力优秀 三、B树和B树区别 一、在B树中非叶子节点和叶子节点都会存储数据而B树的数据只存放在叶子节点非叶子节点只存放指针查询效率更稳定 二、在范围查找时效率更高B树的数据都在叶子节存储叶子节点之间通过双向链表维护 四、什么是聚集索引和非聚集索引 聚集索引索引和数据放在一块b数的叶子节点保存了整行数据有且只有一个一般情况用主键作为聚集索引 非聚集索引索引和数据分开存储b数的叶子节点保存对应主键可以有多个。一般自定义的索引都是非聚集索引 五、什么是回表查询 回表的意思就是一次查询没有获得我们所需要的全部数据可能只通过二级索引获得了主键值需要使用该主键值回到聚集索引中重新查询到所有数据。 为避免回表可以采用覆盖索引或者在聚集索引列上进行查询 六、什么是覆盖索引 覆盖索引在select查询中返回的数据在索引列上可以全部找到。比如我们通过id聚集索引进行查询它的叶子节点上保存了整行数据可以一次查询全部返回查询效率高。 而如果所需返回的数据有部分不在索引列上就可能触发回表机制。为了避免查询时尽量不要使用select *尽量在返回列中都包含添加索引的字段。 七、怎么处理超大分页 超大分页一般都是在数据量比较大时我们使用了limit分页查 询并且需要对数据进行排序这个时候效率就很低我们可以采用覆盖索 引和子查询来解决先分页查询数据的id字段确定了id之后再用子查询来过滤只查询这个 id列表中的数据就可以了 因为查询id的时候走的覆盖索引所以效率可以提升很多 八、创建索引的原则 一般选择读的写少的字段创建索引。 尽量选择复合索引一条sql的返回值尽量使用覆盖索引 较长的字段可以采用前缀索引