什么网站百度容易收录,网站地图页面模板,怎么制作网页链接在微信上发,泰安专业的网站建设索引可以提升查询速度#xff0c;会影响where查询#xff0c;以及order by排序。MySQL索引类型如下#xff1a; 从索引存储结构划分#xff1a;B Tree索引、Hash索引、全文索引 从应用层次划分#xff1a;主键索引、唯一索引、单值索引、复合索引 从索引键值类型划分会影响where查询以及order by排序。MySQL索引类型如下 从索引存储结构划分B Tree索引、Hash索引、全文索引 从应用层次划分主键索引、唯一索引、单值索引、复合索引 从索引键值类型划分主键索引、辅助索引二级索引 从数据存储和索引键值逻辑关系划分聚集索引聚簇索引、非聚集索引非聚簇索引
1.什么是索引
索引是为了高效获取数据的数据结构能加快数据库查询数据的速度。
2.索引的存储方式
索引存储是由B树来实现的数据都存放在叶子节点非叶子节点只存储主键值。叶子节点之间用双向指针连接构成双向链表由小到大排列。 3.索引的优势和劣势
优势
可以提高数据的检索速度减少IO次数。通过索引列对数据进行排序可大大提升效率。
劣势
索引会占用磁盘的空间。会影响更新表的效率不仅要更新数据还要同步更新索引。
4.常用的索引
4.1主键索引
索引列的值必须是唯一的而且不允许有空值。
4.2唯一索引
索引列的值必须是唯一的可以为空值。
4.3全文索引
如果在需要模糊查询的列上设置普通索引那么使用like查询索引并不生效此时就需要创建全文索引了。
4.4组合索引
组合索引即一个索引包含多个列创建组合索引所需的开支比多个单值索引要小。
5.组合索引中的最左前缀原则
例如此时表中有abc三列我们创建(a,b)为组合索引那么我们在查询时如果需要用到此索引就需要遵守最左前缀原则通俗的说就是我们在使用select查询语句时where后面的条件里面必须有创建索引时的最左列(上面的a列)否则查询时索引不生效。 具体原因在组合索引中叶子节点从左到右是整体a有序b的话其实并不是整体有序的而是在a的基础上局部有序即在每个单独的叶子节点里面b才是有序的。这样的话就很好解释了比如我们只把b作为条件来查询那这样的话由于b并不是整体有序的这样和全局查询没什么区别但是如果我们把a和b都作为条件那么因为a是整体有序的就可以很快的锁定满足a的条件然后再局部的查询b就可以大大提升效率了。
举例
select * from table where a’’and b’’索引生效select * from table where b’’and a’’索引生效select * from table where c’’and a’’索引生效(利用索引下推先筛a)select * from table where b’’and c’’索引不生效
6.索引创建的原则
6.1需要创建的情况
主键会自动建立唯一索引。频繁的作为查询的条件的字段。作为排序的字段。order作为分组的字段。group
6.2不需要创建的情况
表内本身的数据太少。经常要增删改的表因为要一直同步修改索引。不作为查询条件的字段。数据重复且分布比较均匀的字段比如性别。