当前位置:话题 > 精华出品区

避免索引失效的一些原则

① 复合索引需要注意的点 复合索引,不要跨列或无序使用(最佳左前缀) 复合索引,尽量使用全索引匹配,也就是说,你建立几个索引,就使用几个索引 ② 不要在索引上进行任何操作(计算、函数、类型转换),否则索引...
 01月14日 20:02  893阅读  举报

优化示例

1)引入案例 #创建新表 createtabletest03 ( a1int(4)notnull, a2int(4)notnull, a3int(4)notnull, a4int(4)notnull ); #创建一个复合索引 createindexa1_a2_a3_te...
 01月14日 20:01  928阅读  举报

explain执行计划常用关键字详解

1)id关键字的使用说明 ① 案例:查询课程编号为2 或 教师证编号为3 的老师信息: #查看执行计划 explainselectt.* fromteachert,coursec,teacherCardtc wheret.tid=c.tidandt.tc...
 01月14日 20:00  871阅读  举报

SQL性能问题的探索

需要我们使用explain分析SQL的执行计划。 该执行计划可以模拟SQL优化器执行SQL语句,可以帮助我们了解到自己编写SQL的好坏。 SQL优化器自动优化:最开始讲述MySQL执行原理的时候,我们已经知道MySQL有一个优化器,当你写了一个SQL语句的时候,SQL优...
 01月14日 19:58  863阅读  举报

索引的分类与创建

1)索引分类 单值索引 唯一索引 复合索引 ① 单值索引 利用表中的某一个字段创建单值索引。一张表中往往有多个字段,也就是说每一列其实都可以创建一个索引,这个根据我们实际需求来进行创建。还需要注意的一...
 01月13日 18:38  899阅读  举报

为什么需要进行SQL优化?

在进行多表连接查询、子查询等操作的时候,由于你写出的SQL语句欠佳,导致的服务器执行时间太长,我们等待结果的时间太长。基于此,我们需要学习怎么优化SQL。
 01月13日 18:36  932阅读  举报

用EXISTS代替IN

IN关键字适合于外表大而内表小的情况,EXISTS适合于外表小而内表大的情况,执行SQL如下: SELECT * FROM special_s...
 01月13日 18:25  869阅读  举报

JOIN的表中使用索引字段

如果日常开发中,使用JOIN关键字链接表后,使用的ON关键字进行条件链接时,如果条件没有索引,则会进行全表扫描,执行SQL如下: EXPLAI...
 01月13日 18:24  390阅读  举报

避免函数运算

在日常SQL撰写中,在WHERE条件上多多少少会用到一些函数,例如截取字符串,执行SQL如下: 使用EXPLAIN关键字执行这段SQL: EXPLAIN SELECT * FROM student WHERE SUBSTR(id_card,0,9)
 01月13日 18:22  339阅读  举报

避免NULL值判断

为了确保没有NULL值,我们可以设定一个默认值。 SQL分析: 使用EXPLAIN关键字执行这段SQL: EXPLAIN SELECT * FROM student WHERE id_card IS NOT NULL
 01月13日 18:21  353阅读  举报

避免使用!=或<>

尽量避免使用!=或<>操作符,下面直接分析SQL: SQL分析: 使用EXPLAIN关键字执行这段SQL: EXPLAIN SELECT * FROM student WHERE id_card != '5031520645'
 01月13日 18:20  329阅读  举报

提升GROUP BY的效率

我们平日写SQL需要多多少少会使用GROUP BY关键字,它主要的功能是去重和分组。 通常它会跟HAVING一起配合使用,表示分组后再根据一定的条件过滤数据,常规执行的SQL如下:
 01月13日 18:19  358阅读  举报

LIMIT关键字优化

平日开发工作中,我们对于分页的处理一般是这样的: SELECT * FROM student LIMIT 999910,10
 01月13日 18:17  358阅读  举报

COUNT查询数据是否存在优化

比如我想判断年龄为18岁的学生是否存在,我们往往会执行如下SQL: SELECT COUNT(*) FROM student WHERE ...
 01月13日 18:15  349阅读  举报

最左匹配原则(重要)

上面我们按照name,address和phone这个顺序建立了复合索引,相当于建立了(name),(name、address)和(name、address、phone)三个索引,如果我们查询的where条件违背了建立的顺序,则复合索引就失效了,下面直接进行SQL分析:
 01月13日 18:13  377阅读  举报

字符串字段优化

查询指定的身份证号码的学生,如果我们平时疏忽了给身份证号码加上单引号,执行SQL如下: SELECT * FROM student WHERE...
 01月13日 18:11  349阅读  举报

LIKE语句优化

平时我们日常开发用到的LIKE关键字进行模糊匹配会非常多,但是有的情况会使索引失效,导致查询效率变慢,例如: 只要身份证字段包含50就查出来,执行SQL如下: SELECT * FROM student WHERE id_card like '%50%'...
 01月13日 18:09  370阅读  举报

避免使用or条件(有争议)

如果我们要查询指定的性别或者指定的身份证号码的学生,执行SQL如下: SELECT * FROM student WHERE sex = 0 ...
 01月13日 18:04  377阅读  举报

小表驱动大表

言简意赅,意思就是让小表查出来的数据去再查询大表当中的数据。比如我们想查询学生表当中特殊学生的信息,我们就可以使用以special_student这个小表去驱动student这个大表,...
 01月13日 18:01  358阅读  举报

慎用UNION关键字

例如我们根据性别去查询所有学生的信息,虽然这种操作多此一举,直接SELECT *就好了,为了演示这2个关键字的详细区别,使用UNION关键字执行的SQL如下: SELECT * FROM student WHERE sex = 0 UNION  SELEC...
 01月13日 18:00  432阅读  举报
点击查看更多 >