当前位置:网站首页>MySQL——索引
MySQL——索引
2022-07-03 21:02:00 【Java學不會】
文章目錄
1、簡介
MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數據的數據結構。
索引在小數據量的時候,用處不大,但是在大數據的時候,區別十分明顯。
2、索引的分類
2.1、主鍵索引(PRIMARy KEY)
- 唯一的標識,主鍵不可重複,一個錶只能有一個主鍵。
2.2、唯一索引(UNIQUE KEY)
- 避免重複的數據出現,唯一索引可以重複,一個錶中可以有多個唯一索引
2.3、常規索引(KEY/INDEX)
- 默認的,index,key關鍵字來設置
2.4、全文索引(FullText)
- 在特定的數據庫引擎下才有,MySAM
- 快速定比特數據
3、測試索引
3.1、創建100萬條數據
CREATE TABLE `app_user` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) DEFAULT'' COMMENT'用戶昵稱',
`email` VARCHAR(50) NOT NULL COMMENT'用戶郵箱',
`phone` VARCHAR(20) DEFAULT'' COMMENT'手機號',
`gender` TINYINT(4) UNSIGNED DEFAULT '0'COMMENT '性別(0:男;1:女)',
`password` VARCHAR(100) NOT NULL COMMENT '密碼',
`age` TINYINT(4) DEFAULT'0' COMMENT '年齡',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT = 'app用戶錶'
-- 插入100玩數據
DELIMITER $$ -- 寫函數之前必須要寫,標志
CREATE FUNCTION mock_data()
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 1000000;
DECLARE i INT DEFAULT 0;
WHILE i<num DO
INSERT INTO app_user(`name`,`email`,`phone`,`gender`,`password`,`age`)
VALUES(CONCAT('用戶',i),'[email protected]',CONCAT('15',FLOOR(RAND()*(999999999-100000000)+100000000)),
FLOOR(RAND()*2),UUID(),FLOOR(RAND()*100));
SET i=i+1;
END WHILE;
RETURN i;
END;
SELECT mock_data()
- 查詢第999999條數據:SELECT * FROM app_user WHERE
name
=‘用戶999999’;
3.2、添加索引
-- id_錶名_字段名
CREATE INDEX id_app_user_name ON app_user(`name`)
- 查詢第999999條數據:SELECT * FROM app_user WHERE
name
=‘用戶999999’;
4、索引原則
- 索引不是越多越好
- 不要對經常變動數據加索引
- 小數據量的錶不需要加索引
- 索引一般加在常用來查詢的字段上
边栏推荐
- Brief analysis of ref nerf
- How to choose cache read / write strategies in different business scenarios?
- Operate BOM objects (key)
- In 2021, the global general crop protection revenue was about $52750 million, and it is expected to reach $64730 million in 2028
- Cap and base theory
- Hcie security Day10: six experiments to understand VRRP and reliability
- @Scenario of transactional annotation invalidation
- Redis data migration (II)
- Shortest path problem of graph theory (acwing template)
- Is flush account opening and registration safe and reliable? Is there any risk?
猜你喜欢
Compilation Principle -- syntax analysis
Use nodejs+express+mongodb to complete the data persistence project (with modified source code)
Pengcheng cup Web_ WP
Capture de paquets et tri du contenu externe - - autoresponder, composer, statistiques [3]
Etcd 基于Raft的一致性保证
Qtablewidget control of QT
Advanced collaboration: coroutinecontext
强化學習-學習筆記1 | 基礎概念
Rhcsa third day notes
强化学习-学习笔记1 | 基础概念
随机推荐
Cap and base theory
From the behind the scenes arena of the ice and snow event, see how digital builders can ensure large-scale events
Inventory 2021 | yunyuansheng embracing the road
Example of peanut shell inner net penetration
Nmap and masscan have their own advantages and disadvantages. The basic commands are often mixed to increase output
In 2021, the global general crop protection revenue was about $52750 million, and it is expected to reach $64730 million in 2028
淺析 Ref-NeRF
@Transactional注解失效的场景
2022 high voltage electrician examination and high voltage electrician reexamination examination
Volley source code analysis
Qtablewidget control of QT
浅议.NET遗留应用改造
【愚公系列】2022年7月 Go教学课程 002-Go语言环境安装
JS three families
Qualcomm platform WiFi update disconnect end open event
强化學習-學習筆記1 | 基礎概念
不同业务场景该如何选择缓存的读写策略?
MySQL 8.0 data backup and recovery
Set, weakset, map, weakmap in ES6
The 12th Blue Bridge Cup