MySQL索引

小伙伴们在使用MySQL数据库的时候经常会使用到索引,而且索引也是面试过程中经常被问到的知识点,今天我们来一起总结一下索引的相关知识点。

1.什么是索引

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针,打个比方,如果数据库是一本书的话,那索引就是书的目录,使用索引可以加快数据库的查询效率,就好比用目录可以快速找到书里想找的内容。
一般数据库默认会为每一张表的主键生成索引。索引分为聚集索引和非聚集索引。聚集索引是按照数据库数据存放的物理位置顺序,一般多行查询效率高。非聚集索引则是对单行查找效率更高。

2.索引类型

一般索引分为普通索引、唯一索引、全文索引、单列、多列索引、组合索引。

1)普通索引 最基本的索引,没任何限制,MyISAM默认B树类索引

2)唯一索引 相比于普通索引只是要求索引列的值必须唯一,但允许索引列为NULL值

3)全文索引 FULLTEXT索引只能用于MyISAM表

4)单列索引、多列索引

5)组合索引 遵循最左前缀的原则

3.如何选择索引

尽管索引可以提高查询效率,但这不是绝对的!虽然索引就是为提高查询效率而生的,但是如果用错了索引不仅无法提高查询效率,有时候反而会影响数据库的性能。那么该怎么选择合适的索引的,小编总结了一下分享给大家。

数据操作使用聚集索引使用非聚集索引
列经常分组排序
返回指定范围内的数据
一个或极少不同值
小数目的不同值
大数目的不同值
频繁更新的列
主键列
外键列
频繁修改索引列

4.索引的注意事项

1)索引索引不会包含NULL值的列
只要列中包含有NULL值,就不会被包含在索引中,复合索引中只要有一列中包含NULL值,那么该列对于数据库就是无效的,因此对于添加索引的列数值值不要设置默认为NULL

2)尽可能地地使用短索引
对串列对串列进行索引,应指定一个前缀长度。短索引不仅可以提高查询效率,而且可以节省磁盘空间和I/O操作

3)不要对索引列排序
MySQL查询只能有一个只能有一个索引,如果where子句中如果使用了索引,那么Order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下情况下不要对索引进行排序操作。尽量不要包含多个列的排序,如果需要建议给这些列创建复合索引。

4)like语句操作
一般like“%aaa%”不支持索引,like“aaa%”支持索引。

5)禁止在索引列上计算
不要在列上计算,这样会导致索引失效而进行全表扫描,造成数据库查询性能下降。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL索引是一种数据结构,可以帮助MySQL快速定位和访问表中的数据。使用索引可以提高查询效率,降低数据库的负载。下面是MySQL索引的一些基本概念和使用方法: 1. 索引类型 MySQL支持多种类型的索引,包括B树索引、哈希索引、全文索引等。其中,B树索引是最常用的一种,也是默认的索引类型。B树索引可以用于精确匹配和范围查询,而哈希索引主要用于等值查询,全文索引则用于文本检索。 2. 索引创建 可以在创建表时指定索引,例如: ``` CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50), INDEX idx_email (email) ); ``` 也可以在已有的表上添加索引,例如: ``` ALTER TABLE users ADD INDEX idx_name (name); ``` 3. 索引使用 查询语句中可以使用WHERE子句和ORDER BY子句来利用索引,例如: ``` SELECT * FROM users WHERE email = 'example@example.com'; SELECT * FROM users WHERE name LIKE 'John%' ORDER BY id DESC; ``` 需要注意的是,索引并不是越多越好,过多的索引会占用过多的磁盘空间并降低写操作的性能。因此,需要根据实际情况选择合适的索引。同时,还需要定期对索引进行维护,包括优化查询语句、删除不必要的索引等。 4. 索引优化 MySQL提供了一些工具来优化索引,例如EXPLAIN命令可以帮助分析查询语句的执行计划,找出慢查询和不必要的全表扫描。可以使用OPTIMIZE TABLE命令来优化表的索引和碎片,从而提高查询性能。还可以使用缓存来避免频繁的查询操作,例如使用Memcached或Redis等缓存工具。 以上就是MySQL索引的一些基本概念和使用方法,需要根据实际情况进行选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值