当前位置:网站首页>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、索引原則
- 索引不是越多越好
- 不要對經常變動數據加索引
- 小數據量的錶不需要加索引
- 索引一般加在常用來查詢的字段上
边栏推荐
- Cannot load driver class: com. mysql. cj. jdbc. Driver
- Pytorch sets the weight and bias of the model to zero
- Introduction to golang garbage collection
- The global industrial design revenue in 2021 was about $44360 million, and it is expected to reach $62720 million in 2028. From 2022 to 2028, the CAGR was 5.5%
- For in, foreach, for of
- thrift go
- MySQL dump - exclude some table data - MySQL dump - exclude some table data
- Phpexcel import export
- C 10 new feature [caller parameter expression] solves my confusion seven years ago
- TLS environment construction and plaintext analysis
猜你喜欢
LabVIEW training
Redis data migration (II)
《ActBERT》百度&悉尼科技大学提出ActBERT,学习全局局部视频文本表示,在五个视频-文本任务中有效!...
2022 low voltage electrician examination and low voltage electrician simulation examination question bank
Baohong industry | good habits that Internet finance needs to develop
你真的知道自己多大了吗?
Gee calculated area
MySQL——数据库备份
Discussion Net legacy application transformation
Research Report on the overall scale, major manufacturers, major regions, products and application segmentation of rotary tablet presses in the global market in 2022
随机推荐
How to choose cache read / write strategies in different business scenarios?
What is the maximum number of concurrent TCP connections for a server? 65535?
@Scenario of transactional annotation invalidation
浅议.NET遗留应用改造
Apprentissage intensif - notes d'apprentissage 1 | concepts de base
Leetcode daily question 540 A single element in an ordered array Valentine's Day special article looking for a single dog in a pile of lovers ~ the clown is myself
Use nodejs+express+mongodb to complete the data persistence project (with modified source code)
Such as the visual appeal of the live broadcast of NBA Finals, can you still see it like this?
淺析 Ref-NeRF
Link aggregation based on team mechanism
Golang type assertion and conversion (and strconv package)
Phpexcel import export
Nmap and masscan have their own advantages and disadvantages. The basic commands are often mixed to increase output
MySQL dump - exclude some table data - MySQL dump - exclude some table data
内存分析器 (MAT)
Do you really know how old you are?
运维各常用命令总结
leetcode-540. A single element in an ordered array
jvm jni 及 pvm pybind11 大批量数据传输及优化
18、 MySQL -- index