索引怎样实现
在mysql数据库中执行查找语句时
CREATE TABLE T1(id INT);
INSERT INTO T1 VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
SELECT *FROM T1 WHERE id=9;
机器会进行全表扫描,将要查找的数据与表中的每一条数据进行对比,这使得查找效率大幅下降;
而当我们创建一个索引
CREATE INDEX T1_index ON T1(id);
在机器底层会将表数据形成一个二叉树结构
索引的意义
当查询语句被执行时数据被有规律的存放在一颗二叉树中,免去了重复的查询步骤;
例如当以传统的方法
SELECT *FROM T1 WHERE id=3;
T1表中所有的id都会与3进行比较相当于执行10次;
而有了索引在执行,只需要与5,4,3进行比较即可得到答案,大大得提高了查找的效率;
当数据库中拥有海量的数据时,二者的差距会明显增大。
索引的副作用
1、使用索引会生成索引文件占用硬盘空间
2、因为索引改变了数据的存储结构,所有当进行其他的操作时(例如:insert、delete、update等),反而会降低效率,因为这种操作破坏了Tree的结构,将重新进行维护,虽说索引会导致dml语句效率的下降,但是在日常使用中select语句的出现频率远超其他语句,为了提升select的效率,索引是非常有必要的;