随笔分类 - MySQL
摘要:本节内容总结自《High Performance MySQL》 DISTINCT:DISTINCT是用来去重的。DISTINCT支持单列,多列的去重方式。单列去重的方式是相同的值只保留一个。多列去重是根据指定列的信息进行的,即只有所有指定的列都相同,才会被认为是相同的信息。 GROUP BY:在一个
阅读全文
摘要:本节内容总结自《High Performance MySQL》 IN和EXISTS的用法和区别 EXISTS:EXISTS对外表用loop逐条查询,每次查询都会查看EXISTS条件语句(子查询语句),条件语句中能够返回记录行则条件就为真,外表的这条记录就会被加入结果集,如果EXISTS里的子查询不能
阅读全文
摘要:本节内容总结自《High Performance MySQL》 查询执行的基础 当向MySQL发送一个请求时,MySQL做了什么 客户端发送一条查询给服务器。 服务器先检查缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一个阶段。 服务器端进行SQL解析,预处理,再由优化器生成对应的执
阅读全文
摘要:本节内容总结自《High Performance MySQL》 高性能的索引策略 独立的列 查询时,最好不要对索引字段建立表达式,也不能将索引字段作为函数的参数,因为这会使索引失效,MySQL无法自动解析这种方程。 前缀索引和索引选择性 索引选择性 = 不重复的索引值 / 数据表的记录总数 T 前缀
阅读全文
摘要:本节内容总结自《High Performance MySQL》 索引基础 索引的概念 索引是存储引擎用于快速找到记录的一种数据结构。索引类似于一本书的目录部分,MySQL在利用索引查找的时候与其类似,其先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。MySQL中索引可以包含一个或多个列
阅读全文
摘要:本节内容总结自《High Performance MySQL》 加快ALTER TABLE的操作速度 MySQL执行ALTER TABLE的原理 MySQL执行大部分修改表结构操作的方法是用一个新的结构创建一个空表,从旧表中查出所有数据插入新表,然后删除旧表,一般而言,大部分ALTER TABLE操
阅读全文
摘要:本节内容总结自《High Performance MySQL》 事务 概念 事务就是一组原子性的SQL查询,或者说是一个独立的工作单元。如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该查询,否则所有的语句都不会执行。综述:事务内的语句,要么全部执行成功,要么全部执行失败。 事务中
阅读全文
摘要:本节内容总结自《High Performance MySQL》 选择优化的数据类型 选择数据类型的方法 更小的通常更好:一般情况下尽量使用可以正确存储数据的最小数据类型。更小的通常更快,因为他们占用更少的磁盘,内存和CPU缓存。 简单就好:简单数据类型的操作通常需要更少的CPU周期。例如,整形比字符
阅读全文
摘要:> 本节内容总结自《High Performance MySQL》 设计MySQL应该注意以下几点: 1. 避免太多的列:MySQL的存储引擎API工作时需要在服务器层和存储引擎层之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列。从行缓冲中将编码过的列转码成行数据结构的操作代价是非常
阅读全文