-
索引本质上是数据库引擎用来快速查找数据的数据结构,可以显著提高查询的性能,为了加快运行较慢的查询。
-
创建索引
-
默认索引
- create index 索引名 on 表名 (列名);
- 通过对列名进行创建索引,在查询的时候,数据库就能通过索引找到匹配的那些行,适用于支持高效的范围查询。
sql-- 默认索引 create index idx_points on customers (points); select customer_id from customers where points>1000;
-
前缀索引
- create index idx_last_name on customers (last_name(5));
- 对于长字符串列,建议使用前缀索引来节省存储空间和提高查询效率。前缀索引只索引字符串的前几个字符。
sql--前缀索引 create index idx_last_name on customers (last_name(5)); select customer_id from customers where last_name like 'boa%';
-
全文索引
- create fulltext index idx_title_body on posts(title,body);
- 全文索引可以在应用程序里打造快速强大的搜索引擎,适用于需要高效文本搜索,如文章,博客等。
sql-- 全文索引 create fulltext index idx_title_body on posts(title,body); select *,match(title,body) against ('react redux') from posts -- where match (全文索引的列名(所有)) against(关键词) -- where match(title,body) against ('react redux') -- 表示包含 'react' 或 'redux' 的记录 where match(title,body) against('react -redux +form' in boolean mode) -- 表示包含 'react' ,不包含 'redux',必须包含'form' 的记录
-
复合索引
- create index idx_state_points on customers (state,points);
- 复合索引也叫组合索引,就是对多个列建立一个索引,遵循最左前缀原则,适用于需要在多个列进行查询的场景,显著提高查询效率。
sql-- 复合索引 create index idx_state_points on customers (state,points); explain select customer_id from customers where state='ca' and points>1000;
-
-
删除索引
- drop index idx_state on customers;
-
使用索引排序
- 使用索引对数据进行排序,当你在添加索引时,MySQL会获取该列中的所有值,对其排序,并将它们存储在索引中。
-
覆盖索引
- 一个包含所有满足查询需要的数据的索引,数据库可以直接从索引中获取数据,避免了回表操作,显著提高查询性能。
-
维护索引
- 索引可以极大地提高查询的性能,但要注意在创建新索引之前,要先查看现有索引,否则容易产生"重复索引"和"多余索引"。
- "重复索引",指同一组列上且顺序一致的索引,对于该索引应删除。
- "多于索引",指多个索引的前缀列相同,或复合索引中包含了主键的索引,对于该索引应合并。
SQL - 索引
OLDERHARD2024-08-20 23:36
相关推荐
GoppViper9 小时前
用户测试如何提升SEO转化率?四种实操方法与案例解析先吃饱再说9 小时前
后端开发绕不开的 SQL:从建表、查询到索引优化,一篇讲透敲代码的小小酥9 小时前
InfluxDB时序数据库(续)智购科技自动贩卖机10 小时前
自动售货机嵌入式系统Go语言开发实践:从资源受限设备到RTOS协程调度的工程化之路SelectDB10 小时前
2026 年 Apache Doris 和 StarRocks 怎么选?一篇更接近真实选型的对比祢真伟大10 小时前
DM8 归档日志挖掘导致 TEMP 表空间不释放的问题排查qq_4850152110 小时前
MyBatis-Plus 3.x FieldStrategy 作用lhldsg10 小时前
课程排课系统实战指南:从数据库设计到算法调优全流程解析丰锋ff10 小时前
数据库操作的一些相关命令往事只能回味味道10 小时前
MySQL创建数据库并授权指导用户与IP