æç« ç®å½
- ç´¢å¼
- 1.ç´¢å¼çåç±»
- 主é®ç´¢å¼ï¼PRIMARY KEYï¼
- å¯ä¸ç´¢å¼ï¼UNIQUE KEYï¼
- 常è§ç´¢å¼ï¼KEY æ INDEX)
- å ¨æç´¢å¼ï¼FULLTEXTï¼
- 2.æµè¯ç´¢å¼
- ï¼0ï¼å»ºç«æµè¯æ°æ®è¡¨
- ï¼1ï¼å»ºç«ç´¢å¼åâæ¥è¯¢é度æµè¯
- ï¼2ï¼å»ºç«ç´¢å¼åâæ¥è¯¢é度æµè¯
- 3.ç´¢å¼åå
- 4.ç´¢å¼çæ°æ®ç»æ
ç´¢å¼
ï¼1ï¼å®ä¹ï¼ç´¢å¼æ¯å¸®å©MySQLé«æè·åæ°æ®çæ°æ®ç»æã
ï¼2ï¼æ¥ç表ä¸ç´¢å¼ï¼SHOW INDEX FROM 表å;
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldHL0FWby9mZvwFN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcV2Zh1Wa9M3clN2byBXLzN3btgHL9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iN4QjN3kjYkJzY2Y2NhFjNzYzX0UjMxcDMyAzLcFTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
1.ç´¢å¼çåç±»
主é®ç´¢å¼ï¼PRIMARY KEYï¼
æä¸ä¸ªå±æ§æå±æ§ç»è½å¯ä¸æ è¯ä¸æ¡è®°å½ã
ç¹ç¹ :
- æ常è§çç´¢å¼ç±»å
- ç¡®ä¿æ°æ®è®°å½çå¯ä¸æ§
- ç¡®å®ç¹å®æ°æ®è®°å½å¨æ°æ®åºä¸çä½ç½®
ä¾åï¼
CREATE TABLE `Grade`(
`GradeID` INT(11) AUTO_INCREMENT,
`GradeName` VARCHAR(32) NOT NULL UNIQUE,
PRIMARY KEY (`GradeID`)
)
å¯ä¸ç´¢å¼ï¼UNIQUE KEYï¼
ä½ç¨ : é¿å åä¸ä¸ªè¡¨ä¸ææ°æ®åä¸çå¼éå¤ã
ä¸ä¸»é®ç´¢å¼çåºå«ï¼
- 主é®ç´¢å¼åªè½æä¸ä¸ª
- å¯ä¸ç´¢å¼å¯è½æå¤ä¸ª
ä¾åï¼
CREATE TABLE `Grade`(
`GradeID` INT(11) AUTO_INCREMENT,
`GradeName` VARCHAR(32) NOT NULL,
PRIMARY KEY (`GradeID`)
UNIQUE KEY `GradeIDIndex` (`GradeID`)
UNIQUE KEY `GradeNameIndex` (`GradeName`)
)
常è§ç´¢å¼ï¼KEY æ INDEX)
ä½ç¨ : å¿«éå®ä½ç¹å®æ°æ®ã
注æ :
- index å key å ³é®åé½å¯ä»¥è®¾ç½®å¸¸è§ç´¢å¼
- åºå å¨æ¥è¯¢æ¾æ¡ä»¶çå段
- ä¸å®æ·»å 太å¤å¸¸è§ç´¢å¼ï¼å½±åæ°æ®çæå ¥ï¼å é¤åä¿®æ¹æä½
ä¾åï¼
å建表æ¶æ·»å ç´¢å¼
CREATE TABLE `result`(
-- çç¥ä¸äºä»£ç
INDEX/KEY `ind` (`studentNo`,`subjectNo`) -- å建表æ¶æ·»å
)
常è§è¡¨åæ·»å ç´¢å¼
ALTER TABLE `result` ADD INDEX `ind`(`studentNo`,`subjectNo`);
å ¨æç´¢å¼ï¼FULLTEXTï¼
ä½ç¨ : å¿«éå®ä½ç¹å®æ°æ®ã
注æ :
- åªè½ç¨äºMyISAMç±»åçæ°æ®è¡¨
-
åªè½ç¨äºCHAR , VARCHAR , TEXTæ°æ®åç±»å
éå大åæ°æ®é
ALTER TABLE student ADD FULLTEXT INDEX `studentNameIndex` (`studentName`);
2.æµè¯ç´¢å¼
ï¼0ï¼å»ºç«æµè¯æ°æ®è¡¨
å建æµè¯è¡¨ï¼ä¸å¼å§å ä¸å»ºç«ç´¢å¼ï¼é¤ä¸»é®å¤ï¼
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 NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='appç¨æ·è¡¨'
æ¹éæå ¥æ°æ®ï¼1wè¡
DROP FUNCTION IF EXISTS mock_data;
DELIMITER $$
CREATE FUNCTION mock_data()
RETURNS INT
BEGIN
DECLARE num INT DEFAULT 10000;
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('18', FLOOR(RAND()*
(999999999-100000000)+100000000)),FLOOR(RAND()*2),UUID(),
FLOOR(RAND()*100));
SET i = i + 1;
END WHILE;
RETURN i;
END;
SELECT mock_data();
ï¼1ï¼å»ºç«ç´¢å¼åâæ¥è¯¢é度æµè¯
ç®å并æªå»ºç«ç´¢å¼ï¼è¿è¡æ¥è¯¢ï¼æµè¯æ¥è¯¢æ¶é´
SELECT * FROM app_user WHERE name = 'ç¨æ·6666'; -- æ¥çèæ¶
å©ç¨EXPLAINè¿è¡åæ
EXPLAIN SELECT * FROM app_user WHERE name = 'ç¨æ·6666'
ï¼2ï¼å»ºç«ç´¢å¼åâæ¥è¯¢é度æµè¯
å建索å¼ï¼
CREATE INDEX idx_app_user_name ON app_user(`name`);
å·²ç»å»ºç«ç´¢å¼ï¼è¿è¡æ¥è¯¢ï¼æµè¯æ¥è¯¢æ¶é´
SELECT * FROM app_user WHERE name = 'ç¨æ·6666'; -- æ¥çèæ¶
å©ç¨EXPLAINè¿è¡åæ
EXPLAIN SELECT * FROM app_user WHERE name = 'ç¨æ·6666'
3.ç´¢å¼åå
- ç´¢å¼ä¸æ¯è¶å¤è¶å¥½
- ä¸è¦å¯¹ç»å¸¸åå¨çæ°æ®å ç´¢å¼
- å°æ°æ®éç表建议ä¸è¦å ç´¢å¼
- ç´¢å¼ä¸è¬åºå å¨æ¥æ¾æ¡ä»¶çå段
4.ç´¢å¼çæ°æ®ç»æ
- Hashç±»åçç´¢å¼ï¼æ¥è¯¢åæ¡å¿«ï¼èå´æ¥è¯¢æ ¢
- B-treeç±»åçç´¢å¼ï¼b+æ ï¼å±æ°è¶å¤ï¼æ°æ®éææ°çº§å¢é¿ï¼æ们就ç¨å®ï¼å 为innodbé»è®¤æ¯æå®ï¼