在进行多表连接查询、子查询等操作的时候,由于你写出的SQL语句欠佳,导致的服务器执行时间太长,我们等待结果的时间太长。基于此,我们需要学习怎么优化SQL。
2024年01月13日 18:36
995阅读
举报
1)引入案例 #创建新表 createtabletest03 ( a1int(4)notnull, a2int(4)notnull, a3int(4)notnull, a4int(4)notnull ); #创建一个复合索引 createindexa1_a2_a3_te...
2024年01月14日 20:01
978阅读
举报
1)索引分类 单值索引 唯一索引 复合索引 ① 单值索引 利用表中的某一个字段创建单值索引。一张表中往往有多个字段,也就是说每一列其实都可以创建一个索引,这个根据我们实际需求来进行创建。还需要注意的一...
2024年01月13日 18:38
952阅读
举报
① 复合索引需要注意的点 复合索引,不要跨列或无序使用(最佳左前缀) 复合索引,尽量使用全索引匹配,也就是说,你建立几个索引,就使用几个索引 ② 不要在索引上进行任何操作(计算、函数、类型转换),否则索引...
2024年01月14日 20:02
951阅读
举报
1)id关键字的使用说明 ① 案例:查询课程编号为2 或 教师证编号为3 的老师信息: #查看执行计划 explainselectt.* fromteachert,coursec,teacherCardtc wheret.tid=c.tidandt.tc...
2024年01月14日 20:00
922阅读
举报
IN关键字适合于外表大而内表小的情况,EXISTS适合于外表小而内表大的情况,执行SQL如下: SELECT * FROM special_s...
2024年01月13日 18:25
920阅读
举报
需要我们使用explain分析SQL的执行计划。 该执行计划可以模拟SQL优化器执行SQL语句,可以帮助我们了解到自己编写SQL的好坏。 SQL优化器自动优化:最开始讲述MySQL执行原理的时候,我们已经知道MySQL有一个优化器,当你写了一个SQL语句的时候,SQL优...
2024年01月14日 19:58
914阅读
举报
例如我们根据性别去查询所有学生的信息,虽然这种操作多此一举,直接SELECT *就好了,为了演示这2个关键字的详细区别,使用UNION关键字执行的SQL如下: SELECT * FROM student WHERE sex = 0
UNION
SELEC...
2024年01月13日 18:00
488阅读
举报
如果我们要查询指定的性别或者指定的身份证号码的学生,执行SQL如下: SELECT * FROM student WHERE sex = 0 ...
2024年01月13日 18:04
437阅读
举报
如果日常开发中,使用JOIN关键字链接表后,使用的ON关键字进行条件链接时,如果条件没有索引,则会进行全表扫描,执行SQL如下: EXPLAI...
2024年01月13日 18:24
435阅读
举报
上面我们按照name,address和phone这个顺序建立了复合索引,相当于建立了(name),(name、address)和(name、address、phone)三个索引,如果我们查询的where条件违背了建立的顺序,则复合索引就失效了,下面直接进行SQL分析:
2024年01月13日 18:13
427阅读
举报
平时我们日常开发用到的LIKE关键字进行模糊匹配会非常多,但是有的情况会使索引失效,导致查询效率变慢,例如: 只要身份证字段包含50就查出来,执行SQL如下: SELECT * FROM student WHERE id_card like '%50%'...
2024年01月13日 18:09
425阅读
举报
言简意赅,意思就是让小表查出来的数据去再查询大表当中的数据。比如我们想查询学生表当中特殊学生的信息,我们就可以使用以special_student这个小表去驱动student这个大表,...
2024年01月13日 18:01
414阅读
举报
为了确保没有NULL值,我们可以设定一个默认值。 SQL分析: 使用EXPLAIN关键字执行这段SQL: EXPLAIN SELECT * FROM student WHERE id_card IS NOT NULL
2024年01月13日 18:21
411阅读
举报
我们平日写SQL需要多多少少会使用GROUP BY关键字,它主要的功能是去重和分组。 通常它会跟HAVING一起配合使用,表示分组后再根据一定的条件过滤数据,常规执行的SQL如下:
2024年01月13日 18:19
409阅读
举报
平日开发工作中,我们对于分页的处理一般是这样的: SELECT * FROM student LIMIT 999910,10
2024年01月13日 18:17
406阅读
举报
有的时候,我们为了图方便,会直接使用SELECT * 一次性查出表中所有的数据: SELECT * FROM student 执行结果如图所示:
2024年01月13日 17:57
406阅读
举报
查询指定的身份证号码的学生,如果我们平时疏忽了给身份证号码加上单引号,执行SQL如下: SELECT * FROM student WHERE...
2024年01月13日 18:11
404阅读
举报
在日常SQL撰写中,在WHERE条件上多多少少会用到一些函数,例如截取字符串,执行SQL如下: 使用EXPLAIN关键字执行这段SQL: EXPLAIN SELECT * FROM student WHERE SUBSTR(id_card,0,9)
2024年01月13日 18:22
395阅读
举报
比如我想判断年龄为18岁的学生是否存在,我们往往会执行如下SQL: SELECT COUNT(*) FROM student WHERE ...
2024年01月13日 18:15
392阅读
举报