7.MySQL索引

7.MySQL索引,第1张

7.MySQL索引

MySQL索引
    • 1.索引的分类:
    • 2.基础语法:
    • 3.测试索引:
      • (1).创建用户表:
      • (2).插入一百万条数据
      • (3).开始测试:
    • 4.索引原则

MySQL官方对索引的定义为:索引(Index)是帮助MySQL搞笑获取数据数据结构
——>索引的本质:索引是数据结构

1.索引的分类:
  • 主键索引(PRIMARY KEY)
    唯一的标识,主键不可重复,一个表中只能有一个列作为主键

  • 唯一索引(UNIQUE KEY)
    避免列重复出现,一个表中的不同列都可以标识唯一索引,即唯一索引可用重复

  • 常规索引(KEY/INDEX)
    默认的,通过index ,key关键字来设置

  • 全文索引(FullText)
    在特定的数据库引擎下才有,MyISAM
    快速定位数据

-- 显示所有的索引信息
USE school
SHOW INDEX FROM student

2.基础语法:
-- 索引的使用
-- 1、在创建表的时候给字段增加索引
-- 2、在创建完毕后,增加索引

-- 显示所有的索引信息
USE school
SHOW INDEX FROM student

-- 增加一个索引 索引名(列名)
ALTER TABLE student ADD FULLTEXT INDEX STUname(studentname);

-- EXPLAIN 分析sql执行的状况
EXPLAIN SELECt * FROM student -- 非全文索引
EXPLAIN SELECt * FROM student WHERe MATCH(studentName) AGAINST('张');

EXPLAIN

3.测试索引: (1).创建用户表:
CREATE TABLE `app_user` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(50) NOT NULL,
`phone` varchar(20) DEFAULT '',
`gender` tinyint(4) unsigned DEFAULT '0',
`password` varchar(100) NOT NULL DEFAULT '',
`age` tinyint(4) DEFAULT NULL,
`create_time` TIMESTAMP,
`update_time` TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
(2).插入一百万条数据

创建函数:

-- 插入100万条数据
DELIMITER $$  -- 写函数之前必须要写,标志
CREATE FUNCTION mock3_data()
RETURNS INT
BEGIN
	DECLARE num INT DEFAULT 1000000;
	DECLARE i INT DEFAULT 0;
	WHILE i 

执行函数:

SELECT mock3_data() -- 执行此函数 生成一百万条数据
(3).开始测试:
不使用索引,查询指定用户
SELECT * FROM app_user WHERe `name`='用户999999'

使用索引,查询指定用户
-- 格式id_表名_字段名
-- CREATE INDEX 索引名 ON 表(字段)
CREATE INDEX id_app_user_name ON app_user(`name`);

SELECt * FROM app_user WHERe `name`='用户999999'

结果:在数据量大的时候,使用索引能大大提高查询效率

4.索引原则
  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表不需要加索引
  • 一般加在常用来查询的字段上
    索引的数据结构
    Hash类型索引
    Btree:InnoDB默认的数据结构
    参考文章:MySQL索引背后的数据结构及算法原理

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5692073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存