本文讨论的是 MySQL 5.7。

1、混用 * 和列名会产生解析错误,要避免这个错误,要使用 tbl_name.* 的格式。

2、where 子句中不能使用 select 中定义的别名,因为 SQL 先解析 where 再解析 select。

3、移除字段首尾的空格:update tble_name set col = trim(col)。

4、MySQL 会停止扫描不需要的表(MySQL stops reading from t2 (for any particular row in t1) when it finds the first row in t2:

SELECT DISTINCT t1.a FROM t1, t2 where t1.a=t2.a;)。

5、update 操作中,如果字段值是相同的,则不会更新记录。

InnoDB 的好处:

1、如果服务器崩溃了,只需重启即可。

InnoDB 会保证崩溃时数据的一致性;可以在重启时恢复 buffer pool、change buffer 的状态,避免 warm-up。

2、支持 foreign key。

3、支持 buffer pool、change buffer(formerly named insert buffer)。

4、支持 checksum,可用于提醒数据损坏。

5、使用 clustered index 实现 primary key。

如果操作使用到了聚簇索引中的列时会很快(where,order by,group by,join)。

6、Adaptive hash index。

7、可以压缩表、索引,节省磁盘空间。

8、新建、删除索引对性能影响很小。

9、Truncating 一个 file-per-table tablespace 会很快,并且释放后的空间可以被用于存储新的数据。

不同于 system tablespace,system tablespace 中的空间被释放后只能被 system tablespace 使用。

MySQL/InnoDB tips & tricks的更多相关文章

  1. MySQL innodb表使用表空间物理文件复制或迁移表

    MySQL InnoDB引擎的表通过拷贝物理文件来进行单表或指定表的复制,可以想到多种方式,今天测试其中2种: 将innodb引擎的表修改为Myisam引擎,然后拷贝物理文件 直接拷贝innodb的表 ...

  2. 数据库索引知识到MySQL InnoDB

    前言 本文聊聊数据库中的索引,涉及索引基础数据结构,分类.以及使用索引的缺点. 索引就像一本书的目录,商场里面各个楼层指示图,让我们不需要自己无目的的找,而是能够很快的找到自己想要的. 1. 索引的基 ...

  3. Mysql InnoDB 共享表空间和独立表空间

    前言:学习mysql的时候总是习惯性的和oracle数据库进行比较.在学习mysql InnoDB的存储结构的时候也免不了跟oracle进行比较.Oracle的数据存储有表空间.段.区.块.数据文件: ...

  4. MYSQL INNODB PAGE一督

    MYSQL INNODB PAGE一督

  5. MySQL InnoDB表--BTree基本数据结构

    MySQL InnoDB表是索引组织表这一点应该是每一个学习MySQL的人都会首先学到的知识,这代表这表中的数据是按照主键顺序存储,也就是说BTree的叶子节点存储了所有该行的数据. 我最开始是搞Or ...

  6. MySQL Innodb数据库性能实践——热点数据性能

    摘要: 对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据. 常见的热点数据有“最新的新闻”.“最热门的新闻”.“下载量最大”的电影等. 为了了解MySQ ...

  7. Mysql InnoDB行锁实现方式(转)

    Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...

  8. Mysql InnoDB行锁实现方式

    Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...

  9. 【翻译】C# Tips & Tricks: Weak References - When and How to Use Them

    原文:C# Tips & Tricks: Weak References - When and How to Use Them Sometimes you have an object whi ...

随机推荐

  1. [Python]基于CNN的MNIST手写数字识别

    目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...

  2. IEnumerable的一些基本方法

    在说明用法之后,先要弄点数据. class Product { public int ID { get; set; } public string Name { get; set; } public ...

  3. leetcode刷题3.无重复字符的最长子串

    题目:给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. ...

  4. JAVA 使用qq邮箱发送邮件

    引入一个架包: gradle( "com.sun.mail:javax.mail:1.5.6", ) 代码如下: private static final String QQ_EM ...

  5. Linux VPS实用简单安全配置

    今天,和大家一起来分享VPS最基本的安全配置. 第一.修改SSH端口 VPS默认的SSH端口是22,那些扫描穷举密码的,也势必从22开始,所以,修改22为一个其他的数字,是非常有必要的. 好了,SSH ...

  6. 安装mysql5.7后无法启动,/var/run/mysqld 目录每次重启后都需要手动去创建--终极解决方案

    鉴于很多童鞋反应,mysql5.7安装后出现无法启动,建立/var/run/mysqld 并赋权mysql用户解决了启动的问题,但是重启系统后又出现无法启动的问题,导致/var/run/mysqld ...

  7. HTTP的长连接和短连接(转)

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

  8. nova libvirt event

    nova中利用libvirt 事件来更新vm的DB中的power状态 https://wiki.openstack.org/wiki/ComputeDriverEvents Nova compute ...

  9. python 各种装饰器示例(python3)

    参考网址: Python中的各种装饰器详解_python_脚本之家http://www.jb51.net/article/63892.htm 一.函数式装饰器: 1.装饰器无参数,被装饰对象无参数 d ...

  10. js动态拼接参数到请求的url上

    var queryConfig={ "page" : "index", "method" : 2, //1:按照方法A查看 2:按照方法B查 ...