![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL性能优化
文章平均质量分 59
黄复贵
To be an outstanding geek.
展开
-
COUNT()的进一步认识
问题引出:要在一条SQL语句中查询film表中release_year值分别为2006,2007的记录数。返回结果集中结果分别为1000,合起来就是2000,但是数据表中最多就1000条记录,且记录的值全是2006,那2007对应的那1000条记录哪来的?再看看当COUNT()内的参数分别为FALSE与NULL时返回的结果:可以发现,当参数为NULL时,COUNT()不会进行计数,当参数为FALSE原创 2016-07-15 22:37:45 · 992 阅读 · 0 评论 -
垂直拆分与水平拆分
垂直拆分:垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分:把不常用的字段单独放在一张表。把TEXT,BIGINT等大字段拆分出来放在附表中。经常组合查询的列放在一张表中(联合索引)。垂直拆分的表在查询的时候用JOIN关键字连接起来即可。水平拆分:水平拆分是指数据表行的拆分,当表的行数超过200万行时,查询就会变得更慢,这时可以把一张的表的数据拆成多张原创 2016-07-19 16:48:35 · 2185 阅读 · 0 评论 -
数据库设计:范式与反范式
我们在设计数据库的过程中,往往要用到范式或反范式的设计模式。熟悉地掌握范式与反范式的要领,学会在实际开发中恰当地混合使用范式与反范式,才能设计出结构合理,执行高效的数据库。下面就以一个经典的例子进行讲述范式与反范式:职工-部门表:部门-部门领导表:结合这两张表,我们知道,职工Tom与Hill都在部门Accounting工作,他们的领导是Alex。这种设计模式,称为范式。范式要求数据表中不存在任何的传原创 2016-07-19 15:49:37 · 11575 阅读 · 2 评论 -
查询产生临时表的调优
我们都知道,SQL查询时若产生了临时表,一般要消耗更多的内存,降低查找的效率。因此,当查询时产生了临时表,要进行优化,使引擎在查询时不用创建临时表就能完成查询。示例使用的是MySQL示例数据库sakila。actor表中有一个主键actor_id,演员的first_name与last_name。film_actor表中外键列actor_id,与actor表进行连接,其中actor_id有很多重复的值原创 2016-07-18 15:58:53 · 4767 阅读 · 0 评论 -
LIMIT优化
当我们想要在数据表中查找特定的几行时,常常使用LIMIT关键字限制返回的结果数。但是LIMIT的性能又如何呢?示例数据表film来自mysql的示例数据库sakila,其中film_id列为主键列(约束)直接使用LIMIT:从结果可以看到,我们返回了film_id从51开始到55结束的5条记录。值得注意的是返回的结果集是从0开始编号的,LIMIT 50,5的意思就是下标为50的记录开始(film_i原创 2016-07-18 21:18:10 · 2268 阅读 · 1 评论 -
分析比较多表查询中的IN与JOIN
IN 是子查询的关键字,JOIN 是连接的关键字,项目开发中经常会使用到多表查询,而子查询与连接正是实现多表查询的重要途径。那两者的实质有什么区别?IN与JOIN谁更好?下面就来分析与比较。现在有test1与test2两张表,都没有任何像主键,外键那样的约束,且只有一个字段。两张表是非相关的。现在使用IN关键字实现子查询,test2作为子查询表(外部表):查看执行计划:使用JOIN关键字实现连接,同原创 2016-07-17 10:56:54 · 30904 阅读 · 3 评论 -
索引优化MAX()
看本文之前,建议先阅读:http://blog.csdn.net/qq_33290787/article/details/51934999普通的 MAX() SQL执行计划:从执行计划中可以看到:本次SQL查询检索了payment表(全表扫描,FTS),一共检索了16086行数据。意味着从磁盘中读取了16086行数据至mysql服务端内存中进行最大值判断(有数据IO)。为payment_date建立原创 2016-07-15 20:59:06 · 2231 阅读 · 0 评论 -
安装MySQL示例数据库sakila
sakila database 数据库文件Zip下载:http://dev.mysql.com/doc/index-other.html将其解压至桌面,打开查看会有三个文件:sakila-schema.sql 数据库结构文件sakila-data.sql 数据库数据文件sakila.mwb还原数据库结构:mysql> source Desktop/sakila-db/saki原创 2016-07-15 10:53:47 · 1431 阅读 · 0 评论 -
MySQL慢查询日志与磁盘IO
对于有效率问题的SQL语句,MySQL通过慢查询日志进行监控。SHOW VARIABLES LIKE ‘slow_query_log’;查看慢查询日志是否开启:SHOW VARIABLES LIKE ‘%log%’;查看关于日志的所有属性: SET GLOBAL log_queries_not_using_indexes = ON;设置全局变量,没用到索引的查询也要记录:SHOW VARI原创 2016-07-15 11:41:31 · 3514 阅读 · 0 评论 -
联合索引优化多条件查询
联合索引是由多个字段组成的组合索引。若经常需要使用多个字段的多条件查询(WHERE col1 = … AND col2 = … AND col3 = …),可以考虑使用联合索引。现在数据表myIndex中i_testID是主键列,其他列无任何索引:多条件查找名字为xiaoming,城市为beijing,年龄为21的人:返回了一行数据,从执行计划中看到,查询没有使用任何索引,进行了全表扫描,磁盘IO大原创 2016-07-19 00:39:31 · 19135 阅读 · 1 评论