数据库索引

本文介绍了数据库索引的概念、类型及应用场景,并讨论了索引带来的优缺点。包括普通索引、主键索引、唯一索引和组合索引的创建方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                 索引的引入:

                         一般应用上线之后性能没有什么问题,但是后面数据量越来越大,查询起来就会越来越慢,这是因为数据量一大,查询起来自然就会慢了,所以这种情况下,我们就需要使用索引


                 (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)注意事项

                          1.对于字符串,如果以%开头,索引就无效。如果name字段创建了索引,但写了where name like '%aa',索引就会不起作用
                          2.对于组合索引,遵循“最左前缀”原则,即如果组合索引最左边那个没有在where中,就不会使用索引。
                            如name,city,phone形成组合索引,
where name like ‘aa’ and city like ‘洛阳’
会使用索引,而
where phone=123 and city like ‘洛阳’
                                不会使用索引
                          3.索引起作用的时机:where中使用的有:<,<=,>,>=,between,in,某些条件下的like

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值