MySQL可以为整数类型指定宽度,例如INT(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,INT(1)和INT(20)是相同的。

有时候可以根据实际情况考虑使用BIGINT代替DECIMAL,将需要存储的货币单位根据小数的位数乘以相应的倍数即可。

CHAR适合存储很短的字符串,或者所有值都接近同一个长度。例如,CHAR非常适合存储密码的MD5值,因为这是一个定长的值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。对于非常短的列,CHAR比VARCHAR在存储空间上也更有效率。例如用CHAR(1)来存储只有Y和N的值,如果采用单字节字符集(5)只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节。

枚举(ENUM)列允许在列中存储一组定义值中的单个值,集合(SET)列则允许在列中存储一组定义值中的一个或多个值。

在mysql中不要使用过多的关联

即使需要存储一个事实上的“空值”到表中时,也不一定非得使用NULL。也许可以使用0、某个特殊值,或者空字符串作为代替。但是有时候也不要过分极端,如果事实的空值不好处理也可以使用null。

如果不是按照索引的最左列开始查找,则无法使用索引。

不能跳过索引中的列。

如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找

在特定的地方可以使用哈希索引

索引并不总是最好的工具。总的来说,只有当索引帮助存储引擎快速查找到记录带来的好处大于其带来的额外工作时,索引才是有效的。

如果查询中的列不是独立的,则MySQL就不会使用索引。“独立的列”是指索引列不能是表达式的一部分,也不能是函数的参数。

mysql> SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5; mysql 不会使用 actor_id 索引

对一些很长的列,可以使用前缀索引,这样索引既不会很大,而且能显著提高效率,但是要自己测试,找到一个最佳的平衡点。

mysql的唯一限制和主键限制都是通过索引实现的

如果创建了索引(A,B),再创建索引(A)就是冗余索引,因为这只是前一个索引的前缀索引。因此索引(A,B)也可以当作索引(A)来使用(这种冗余只是对B-Tree索引来说的)。但是如果再创建索引(B,A),则不是冗余索引,索引(B)也不是,因为B不是索引(A,B)的最左前缀列。

单行访问时很慢的,顺序访问时很快的,索引覆盖查询是很快的

那如何判断一个系统创建的索引是合理的呢?一般来说,我们建议按响应时间来对查询进行分析。找出那些消耗最长时间的查询或者那些给服务器带来最大压力的查询,然后检查这些查询的schema、SQL和索引结构,判断是否有查询扫描了太多的行,是否做了很多额外的排序或者使用了临时表,是否使用随机I/O访问数据,或者是有太多回表查询那些不在索引中的列的操作。

优化查询:优化数据访问(错误的例子:查询不需要的记录,多表关联时返回全部列,返回全部列,重复查询相同的数据,)

高性能mysql sakila_《高性能MySQL》读书笔记二相关推荐

  1. php mysql log文件,mysql log文件【读书笔记1】_MySQL

    bitsCN.com mysql log文件[读书笔记1] 一,错误日志文件:Error.log 记录Mysql Server运行过程所有较为严重的警告或错误信息,以及Mysql Server启动和关 ...

  2. 性能之巅:《高性能网站建设指南》读书笔记

    性能之巅:<高性能网站建设指南>读书笔记 前言 去年笔者(Chainn)读完了几本前端性能优化以及HTTP等网络方面的书,并在生产环境做了部分应用.这些书包括<高性能网站建设指南&g ...

  3. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  4. 《How Tomcat Works》读书笔记(二)

    <How Tomcat Works>读书笔记(二) 这是<How Tomcat Works>第一二章的读书笔记.第一张主要写了一个静态资源处理的web服务器,第二章加了对ser ...

  5. 3D游戏设计读书笔记二

    3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系.   GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...

  6. 《Docker 技术入门与实践》-读书笔记二

    <Docker 技术入门与实践>-读书笔记一 <Docker 技术入门与实践>-读书笔记二 一.数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据 ...

  7. 《Introduction To Modern Cryptography》读书笔记二

    <Introduction To Modern Cryptography>读书笔记二 本笔记纯粹个人读书习惯与相应见解,内容归纳完全出于个人需要与个人局限,如有修改意见(比如哪儿应该是值得 ...

  8. 《李元芳履职记》读书笔记二 IT技术管理的沟通与团队建设

    <李元芳履职记>读书笔记二 接一 https://blog.csdn.net/qq_45937199/article/details/103305223 IT技术人员从技术岗走向管理岗,所 ...

  9. 《Mysql是怎样运行的》读书笔记二

    配置文件 在命令行中设置的启动的选项只对当次启动生效,每次启动时,需要重复把这些写到启动命令行中. 我们把每次需要设置的启动选项写在配置文件中,每次服务器启动时都从这个文件中加载相应的启动选项,我们只 ...

  10. Mysql 安装及实践(学习笔记二)

    安装并配置MySQL数据库 3.2.1 安装MySQL数据库 1.MySQL数据库的安装环境准备 如果读者没有物理服务器环境,则可以搭建vmware等虚拟机环境学习,相应地则需准备如下内容: 1)请提 ...

最新文章

  1. 英雄难过棍子关html游戏开发,《英雄难过棍子关》评测:看我变长再变长!
  2. C语言博客作业--嵌套循环
  3. 【任务脚本】0601更新autojs客户端,回顾之前战绩,注意事项淘宝618活动领喵币autojs脚本,向大神致敬...
  4. D3 Data Visualization in Ext JS
  5. drill apache_使用Apache Drill REST API通过Node构建ASCII仪表盘
  6. linux 查看 CPU 使用率
  7. 使用Python从PDF文件中提取数据
  8. javaScript调用函数失败
  9. css 特殊性 权重排列
  10. linux内存管理(十)-页表管理
  11. 第六篇:汇编基础指令讲解
  12. 传世经典书丛-UNIX编程艺术
  13. 处女座的期末复习-贪心
  14. java list 冒泡_JAVA List 排序 冒泡排序
  15. 小程序全局悬浮窗_微信小程序中悬浮窗功能的实现代码
  16. 【OpenGL】用GLFW和glad创建窗口
  17. 计算机各类会议及投稿文章总结,个人感觉入门超级有用!
  18. 金弘同创教育:拼多多店铺分数多久清算一次
  19. 第13节 eclipse简介
  20. 多边形的单边裁剪算法-JS

热门文章

  1. 如何修改leaflet的marker图标
  2. 将Object对象转成 json串
  3. EJS脚本中MD5应用
  4. 文件磁盘相关函数[22]-文本文件读写-不同数据类型的写入
  5. 03-15 捍卫WAF
  6. 天书般的ICTCLAS分词系统代码(二)
  7. 运用ENVI bandmath对多波段进行计算
  8. geemap_01_安装geemap
  9. matlab中目录的相关操作
  10. 灰度直方图匹配(灰度直方图规定化)matlab代码