表越大消费的时候越多,但也不全是如许;
引荐课程:MySQL教程。
索引是数据构造;
所以,在数据以外,数据库系统还维护着满足特定查找算法的数据构造,这些数据构造以某种体式格局援用(指向)数据,如许就能够在这些数据构造上完成高等查找算法。这类数据构造,就是索引。
索引数据构造剖析
这个索引是个啥构造呢?换句话说,为啥这个构造就能够进步检索速率呢?
若没有索引,搜刮某个纪录时(比方查找name='wish')须要搜刮一切的纪录,由于不能保证只要一个wish,必需悉数搜刮一遍.
若在name上竖立索引,mysql会对全表举行一次搜刮,将每条纪录的name值查找升序分列,然后构建索引条目(name和row_id),存储到索引段中,查询name为wish时即可直接查找对应处所.
3.创建了索引并不一定就会运用,mysql自动统计表的信息后,决议是不是运用索引,表中数据很少时运用全表扫描速率已很快,没有必要运用索引.
举例说明索引的事情机制
表A中有两个字段
id,name
表中如今有1000万条数据
需求:依据name查询出对应的id
假如没有索引,那就得查询表中一切纪录,就得把1000万条数据都得挨个查一遍,你说慢不慢。
如今依据name竖立索引,
索引表构造:
id,name,value
个中value是表A的id,以json数组的体式格局寄存(由于会有多个name雷同的状况存在);
然后能够依据排序划定规矩对name举行排序,
依据算法能够直接定位到name在索引表中的位置,
然后就能够掏出表A 中的id地点的纪录。
简而言之,就是经由过程竖立索引,能够直达表A中的纪录。
固然快了,想必需查询表A要查询1000万条数据,经由过程竖立索引,以算法大大减少了查询量。
以上就是mysql为何要索引的细致内容,更多请关注ki4网别的相干文章!