Mysql索引类型以及适用场景

本文介绍了五种SQL索引类型,包括普通索引、唯一索引、主键索引、单列索引和最左前缀。并讨论了聚集索引与非聚集索引的应用场景,以及创建索引时的注意事项,如避免NULL值和优化字符串索引长度。

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

1.普通索引 
最基本的索引,没有任何限制 
2.唯一索引 
索引列的值必须唯一,但允许有空值 
3.主键索引 
主键索引属于一种特殊的唯一索引,不允许有空值 
4.单列索引 
单个多列索引(组合索引)效率高于多个单列索引 
5.最左前缀(Leftmost Prefixing):多列索引 
多列索引只有在where条件中含有索引中的首列字段时才有效 
例如:fname_lname_age索引, 
以下的搜索条件MySQL都将使用 : 
fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情况将不使用

二、根据sql查询语句确定创建哪种类型的索引,如何优化查询 

 

1. 何时使用聚集索引或非聚集索引?

 

聚集索引对于那些经常要搜索范围值的列特别有效。

聚集索引一张表只能创建一个,非聚集索引一张表可以创建多个,在mysqlInnoDB引擎是唯一支持聚集索引的存储引擎。InnoDB按照主键(Primary Key)进行聚集,如果没有定义主键,InnoDB会试着使用唯一的非空索引来代替。如果没有这种索引,InnoDB就会定义隐藏的主键然后在上面进行聚集。

2注意事项:

只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。

对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

order by中的列是不会使用索引的;

MySQL只对以下操作符才使用索引:<,<=,=,>,>=,between,in,以及某些时候的like(不以通配符%或_开头的情形);

不要在列上进行运算;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值