为什么加了索引后查询速度更加快了呢?
比如二叉树来说,二叉树把1-7个数字分成3层,查询的时候就只需要查询3层就可以了。
再比如hash散列,把每个数据对应一个散列值然后给其分配内存空间。
hash散列原理 :家里房间东西多,为了迅速一次找到物品,整一个弹簧秤,把物品一件件放到弹簧上弹出去,别动其位置,下次再找的时候直接找个相同大小的物品放弹簧上弹出去,弹出去的未知就是你找的物品的位置。
索引就是信息,在计算机上是以索引文件放在计算机硬盘上。有时候索引文件比数据库还大。
散列更加浪费空间。
索引虽然加快了查询的速度,但是会导致增删改速度变慢。
场景场景 :
如果某张表数据量特别大,需要导入另外一张表,而这个表中有10个索引,那么怎么导数据更快些?
先统一去掉索引,然后导数据,最后统一加索引。
索引分类 :
普通索引 :仅仅是加快查询速度。
唯一索引 :行上的值不可重复,即唯一但一张表中可以有多个。
主键索引 :唯一且一张表中只能有一个。
全文索引
查看一张表中所有索引 :show index from 表名 。
建立索引 :alter table 表名 add index 索引名(列名) ;
alter table 表名 add unique 索引名(列名);
alter table 表名 add fulltext 索引名(列名);
alter table 表名 add primary key (列名); //不加索引名哦
删除 索引 :alter table 表名 drop index
MySQL大数据的优化?
MySQL大数据的优化?