MySQL索引

84 阅读1分钟

我们首先创建了一个海量表,通过测试我们得到我们查询一条语句需要花费4.5秒,而创建索引之后对其进行查询只需0.002秒,由此我们可以感受到索引的“威力”

然而,我们上面只是对表中的字段“depno”创建了索引,其只有在where字句中的条件涉及到depno时起效,当我们对ename查询时需要4.7秒

因此我们小结单单建立一个索引并不能解决所有问题

下面我们将探讨“索引”的机制

索引的原理

这里的全表扫描效率较低,所以在没有索引的情况下自然慢

在建立索引之后,表的索引会建立一种数据结构(不一定是表中的二叉树),并且建立之后,如果对表中的数据进行dml的话,相当于之前建立的数据结构内部数据也会被改变,此时自然会影响速度

如何创建索引

如何删除索引

DROP INDEX <索引名> ON <表名>DROP PRIMARY KEY:表示删除表中的主键。一个表只有一个主键,主键也是一个索引。
DROP INDEX index_name:表示删除名称为 index_name 的索引。
DROP FOREIGN KEY fk_symbol:表示删除外键。

如何修改索引

修改索引 = 删除索引 + 创建索引

如何查询索引

何时需要索引