MySQL
Steven_L_
这个作者很懒,什么都没留下…
展开
-
【MySQL】MySQL优化原则
1、小表驱动大表这条优化原则要求查询中按执行顺序尽量用小数据集驱动大数据集。示例1:在使用in条件时,先执行in条件子句,此时由于B表先查,A表后查,B表的数据集应小于A表的数据集。B表数据集小于A表数据集时,用in优于exists。示例2:在使用exists条件时,先执行外层的查询,此时由于A表先查,B表后查,A表的数据集应小于B表的数据集。A表数据集小于B表数据集时,用...原创 2020-04-30 11:43:36 · 3493 阅读 · 0 评论 -
【MySQL】索引优化原则
前面几篇博文谈到索引使用场景和explain命令帮助我们分析索引的执行情况,今天进入正题,来谈谈索引优化的原则。1、全值匹配查询语句尽量使用全值匹配。2、左前缀原则如果一个索引是组合索引,索引了多列,要遵循左前缀原则,即查询从索引的左前缀开始,不能跳过索引中间的列。记忆口诀:带头大哥不能死,中间兄弟不能断。3、不要在索引列上操作操作包括:计算、函数、自动或手动的类型转换,不...原创 2020-04-30 10:24:32 · 4122 阅读 · 1 评论 -
【MySQL】explain命令详解(三)
explain命令的表头7、ken_len索引中使用的字节数,可通过该列计算使用索引的长度。该列显示的是索引字段的最大可能长度,并不是实际使用的长度,是根据表定义计算得出的,不是通过表内检索得出。该列长度越短查找越快。8、 ref表示使用了索引的哪一列或是索引了一个常量值9、rows估算找到对应记录需要检索的行数,基于查找的type和索引使用情况key、key_len综合得出。该...原创 2020-04-29 21:37:08 · 2834 阅读 · 0 评论 -
【MySQL】explain命令详解(二)
explain命令的表头4、type表示该查询的类型,有如下8种值:system:表示表中只有一行记录。 const:通过索引查找,且一次找到记录,针对主键或唯一键的索引,如用户ID。 例子中,主键作为where子句的条件,且为单个值,作为常量处理,即id为2的查询为const类型;由于子查询只有一行记录,因此外层查询是system类型的。 3...原创 2020-04-29 18:50:56 · 2263 阅读 · 0 评论 -
【MySQL】explain命令详解(一)
先来看看explain命令的表头1、id查询的序列号,包含一组数字,表示了一个查询过程中select子句或操作表的顺序。有三种情况:(1)id相同,表示顺序执行,自上而下。执行顺序:t1、t3、t2。(2)id不同且是子查询,则id值越大,表示其优先级越高,越先被执行。执行顺序:t3、t1、t2。(3)id既有相同,也有不同。id值越大,优先级越高,优先执行;id值相同,优先...原创 2020-04-29 18:01:35 · 2466 阅读 · 0 评论 -
【MySQL】经验:索引使用场景
一、适合用索引的场景1、主键主键一般为id等具有唯一性标识的字段,需要频繁查找、连接。InnoDB中会自动为主键建立聚集索引,即使没有定义主键,也会自动生成一个隐藏主键建立索引;MyISAM中不会自动生成主键。建议给每张表指定主键。2、频繁作为查询条件的字段索引是以空间换时间的,某字段如果频繁作为查询条件,建议建立索引3、查询中作为与其他表关联的字段(外键)4、查询中常作为查询排序条件...原创 2020-04-29 17:04:02 · 5250 阅读 · 0 评论 -
【MySQL】记录7种SQL join语句
1、内连接SELECT <select...list> FROM TableA A INNER JOIN TableB B ON A.Key=B.Key; 2、左外连接(包括公共部分)SELECT <select...list>FROM TableA A LEFT JOIN TableB B ON A.Key=B.Key;3、右外连接(包括公共部...原创 2020-04-29 16:07:43 · 2169 阅读 · 0 评论