MySQL(7)— 索引
2024-09-07 00:16:04
七、索引
MySQL官方对索引的定义为:索引(Index)是帮助 MySQL 高效 获取数据的数据结构。
7-1、索引的分类
- 主键索引 (primary key)
- 唯一的标识,主键不可重复,只能有一个列作为主键
- 唯一索引(unique key)
- 唯一索引的 "唯一" 是指为列唯一,而唯一索引可重复
- 常规索引 (key / index)
- 默认的索引,关键字 key / index 设置
- 全文索引 (FullText)
- 在很大数据量才会使用,快速定位数据
基础语法
-- 索引的添加
-- 1、在创建表的时候用关键字声明
-- 2、创建后,用 ALTER/CREATE 进行添加
-- 显示 表A 所有的索引信息
show index from 表A
-- 增加一个全文索引: (索引名) 列名
alter table 表 add fulltext index `aaa` (`aaa`)
-- explain 分析sql的执行状况, 在语句的最前方加上即可
7-2、索引的测试
-- 创建索引前:(在100W条数据中查询某行记录)
SELECT * FROM app_user WHERE `name` = '用户99999' -- 执行耗时 : 0.566 sec
SELECT * FROM app_user WHERE `name` = '用户99999' -- 执行耗时 : 0.564 sec
SELECT * FROM app_user WHERE `id` = 99999 -- 执行耗时 : 0 sec 主键索引
-- 创建索引后:(在100W条数据中查询某行记录)
-- 索引命名规范: id_表名_字段名
CREATE INDEX id_app_user_name ON app_user (`name`) -- 执行耗时 : 11.511 sec
EXPLAIN SELECT * FROM app_user WHERE `name` = '用户999989' -- 执行耗时 : 0 sec
创建索引前:(在100W条数据中查询某行记录)执行耗时 : 0.563 sec
EXPLAIN 关键字显示 sql 执行情况:
======================================================================================================================================================================
创建索引后:(在100W条数据中查询某行记录)几乎不用时间
EXPLAIN 关键字显示 sql 执行情况:
总结:索引在数据量小的时候,区别不大;但在大数据的时候,查询效率提升明显!
7-3、索引的使用
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表不需要加索引
- 应该加在常用来 查询 的字段上
最新文章
- [linux系统]--常用命令
- 获取layer.open弹出层的返回值
- APIO2015 酱油记
- Spring Boot修改内置Tomcat端口号 (zhuan)
- 磁盘与目录的容量[转自vbird]
- MySQL的多实例
- 符号表实现(Symbol Table Implementations)
- centos下一个bash: XXX: command not found解决方案
- 2017广东工业大学程序设竞赛E题(倒水)
- python中用xpath匹配文本段落内容的技巧
- css解决多行溢出显示省略号
- Ansa 自动加载用户脚本设置
- 整合MVC实现文件上传
- mysql ANSI_QUOTES 这个sql_mode的作用(字段可以使用双引号)
- CF367C. Hard problem
- SPL标准库-数据结构
- .NET Core开发日志——Controller
- Employee类
- POJ 2665
- WCF-绑定模型(一)