索引的引入:
一般应用上线之后性能没有什么问题,但是后面数据量越来越大,查询起来就会越来越慢,这是因为数据量一大,查询起来自然就会慢了,所以这种情况下,我们就需要使用索引
(1)索引的概念
索引是一种加快检索表中数据的方法。数据库中的索引类似书籍中的索引,在书籍中,索引允许用户不必翻阅完整本书就能迅速找到所需要的信息。在数据库中,索引也允许数据库程序迅速找到表中数据,而不必扫描整个数据库。
(2)索引的缺点
1.创建索引和维护索引都需要时间,数据量越大时间越长
2.索引需要占用物理空间
3.对表中数据进行insert、update、delete操作时,索引也需要维护,所以降低了insert、update、delete的速度
(3)索引的分类
1.普通索引
1>最基本的索引,没有任何限制
2>创建索引
CREATE INDEX indexName ON mytable(username(length));
2.主键索引
1>创建主键就默认为主键创建了索引
2>创建索引
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
3.唯一索引
1>值必须是唯一的列才能创建唯一索引
2>创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
4.组合索引
1>为多个列创建的索引
2>创建索引
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
(4)索引的使用场景
1.经常在where中出现的列,需要使用索引
2.如果列的值很少,那么就不适合建立索引(如表示性别的列,只有男女两种值,不适合建立)
3.如果列的值经常变换,就不适合建立索引(如用户的登录次数)
(5)注意事项
where name like ‘aa’ and city like ‘洛阳’
会使用索引,而
where phone=123 and city like ‘洛阳’