From a1d3cc5aa548c20f4d6b46ef314adc44ef4f7c91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=82=96=E9=A3=9E=E9=B9=8F?= <2879562915@qq.com> Date: Sat, 19 Oct 2024 09:36:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...40\344\270\216\344\275\234\344\270\232.md" | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 "\350\202\226\351\243\236\351\271\217/20241018\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" diff --git "a/\350\202\226\351\243\236\351\271\217/20241018\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" "b/\350\202\226\351\243\236\351\271\217/20241018\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" new file mode 100644 index 0000000..236bb3c --- /dev/null +++ "b/\350\202\226\351\243\236\351\271\217/20241018\347\264\242\345\274\225\347\273\203\344\271\240\344\270\216\344\275\234\344\270\232.md" @@ -0,0 +1,103 @@ +# 日记 + +秋天了天气还是那么热 + +# 课堂笔记 + +## 索引 + +``` sql +-- mysql索引是B+tree的数据结构 +-- 关键字 +index +-- 创建索引 +create index 名称 on 表名(字段); +-- 查看索引 +show index 名称 from 表名; +-- 删除索引 +drop index 名称 on 表名; +-- 最左原则,创建联合索引时(a,b,c)查询时总要带上a字段 +``` + +# 作业 + +-- 练习和作业 + +```sql +-- 1.给emp分别建立 普通索引和唯一索引 +CREATE INDEX idx_ename ON emp(ename); -- 普通 +CREATE UNIQUE INDEX idx_ename_1 ON emp(ename); -- 唯一 +-- 2.查询emp表有哪些索引\ +SHOW INDEX FROM emp; +``` + +![image-20241018104458035](https://gitee.com/feibang_1_0/xiao-feipengs-picture-bed/raw/master/img/upgit_20241018_1729219498.png) + + + +```sql +-- 3. 使用有索引的字段进行查询,再查看这条语句是否使用到了索引。 +SELECT * FROM emp WHERE ename='刘备'; +EXPLAIN SELECT * FROM emp WHERE ename='刘备'; +``` + +![image-20241018105351725](https://gitee.com/feibang_1_0/xiao-feipengs-picture-bed/raw/master/img/upgit_20241018_1729220031.png) + +```sql +-- 4. 删除前面建立的两个索引 +DROP INDEX idx_ename ON emp; +DROP INDEX idx_ename_1 ON emp; +-- 5. 选择两个字段添加一个复合索引 +CREATE INDEX con_idx ON emp(ename,sal); +``` + + + +```sql +-- 6. 使用复合索引的字段进行查询 +SELECT *FROM emp WHERE ename='刘备' AND sal=29750; +``` + +![image-20241018110111907](https://gitee.com/feibang_1_0/xiao-feipengs-picture-bed/raw/master/img/upgit_20241018_1729220472.png) + +```sql +-- 作业 +-- 想办法用自己的电脑,生成500万行数据,id,uname,age 尽量随机,并记录时间。 + +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + uname VARCHAR(255), + age INT +); + + + +CREATE PROCEDURE GenerateUsers() +BEGIN + DECLARE i INT DEFAULT 0; + START TRANSACTION; + WHILE i < 5000000 DO + INSERT INTO users (uname, age) + VALUES (CONCAT('user_', CEILING(RAND()*9000+1000)), FLOOR(1 + (RAND() * 100))); + SET i = i + 1; + COMMIT; + END WHILE; + + end; + CALL GenerateUsers(); + +``` + +![image-20241018213235759](https://gitee.com/feibang_1_0/xiao-feipengs-picture-bed/raw/master/images/202410182132870.png) + +```sql +-- 1. 不用索引查询 一次姓名uname /并记录时间 +``` + +![image-20241018213344260](https://gitee.com/feibang_1_0/xiao-feipengs-picture-bed/raw/master/images/202410182133367.png) + +``` sql +-- 2. 建立索引查询 一次姓名uname /并记录时间 +``` + +![image-20241018213509976](https://gitee.com/feibang_1_0/xiao-feipengs-picture-bed/raw/master/images/202410182135024.png) -- Gitee