在一般的查询中,都要求尽量围绕创建的索引进行。针对索引,常用的有主键索引,单列索引,组合索引,索引合并等。 在评价索引时,关键看区分度。索引区分度=索引列唯一值/表记录数。 如果在区分度很低的列上建索引,那索引扫描的rows会相当大,该索引的性能表现就基本接近全表扫描了。 主键索引 是一种特殊的唯一 ...
分类:
数据库 时间:
2018-06-03 14:47:16
阅读次数:
164
如下表结构: 在执行联合查询时,如下2种写法的执行计划有明显差别。 第一种: 第二种: 两者的差别在于order by的表字段不同。 看执行计划: 第一种的执行计划: 第二种的执行计划: rows的差别忽略,因为数据在不停的新增过程中。 第一种方式有主键索引,不需要使用临时表。第二种全表扫描,使用临 ...
分类:
数据库 时间:
2018-06-02 14:00:33
阅读次数:
188
随着数据的积累,慢慢的我们一些不好的习惯都会在系统中暴露出来,程序执行的效率低,用户体验下降,如果我们不采取一些措施,那么用户就回流失。提高程序的执行效率可能需要做很多工作,但其中一个重要的工作就是mysql优化,或者称为数据库优化。优化方向1.表设计合理化(数据库范式)2.添加适当的索引(主键索引、唯一索引、普通索引、全文索引)3.高效的sql(sql语句优化,尤其是慢查询)4.分表技术(水平分
分类:
数据库 时间:
2018-06-02 00:39:05
阅读次数:
175
一、MySql的慢查询日志的开启和存储 1、查看是否把没有使用索引的SQL记录到慢查询日志中,查看 log_queries_not_using_indexes 变量; 结果: 查询到的值若为OFF, 表示没有记录, 设置为on来开启记录; 2、查看查询时间 long_query_time ,即查询的 ...
分类:
数据库 时间:
2018-05-31 02:34:01
阅读次数:
204
mysql在错误排查,优化的时候会用到日志 有错误日志,查询日志,慢查询日志,二进制日志 先找到日志文件,linux 一般在/etc/my.cnf中 打开看到 log-error是错误日志 log是所有日志,但是因为量很大,就先关了 log-slow-queries是慢查询日志,下面那个表示慢查询超 ...
分类:
数据库 时间:
2018-05-29 21:10:07
阅读次数:
204
同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描述通用查询日志。 1 ...
分类:
数据库 时间:
2018-05-28 14:46:56
阅读次数:
213
sql与索引优化 数据库表结构优化 系统配置 硬件 慢日志查询没有开启,可以开启一下。 找到my.cnf,添加如下内容 重启mysql。 这时候再看,已经开启了慢查询日志。 ...
分类:
数据库 时间:
2018-05-28 01:04:52
阅读次数:
220
1、日志文件管理概述: 配置文件:/etc/my.cnf 作用:MySQL日志文件是用来记录MySQL数据库客户端连接情况、SQL语句的执行情况以及错误信息告示。 分类:MySQL日志文件分为4种:错误日志、通用查询日志、慢查询日志和二进制日志: 错误日志:记录MySQL服务器的启动、运行、或停止时 ...
分类:
数据库 时间:
2018-05-28 00:49:41
阅读次数:
223
日志文件 错误日志 --log-error error-log=/data/mysql/mysql3306/error.log常规日志 --general_log=/data/mysql/mysql3306/general_log慢查询日志 --slow_query-log=/data/mysql/ ...
分类:
数据库 时间:
2018-05-27 12:01:24
阅读次数:
193
接上篇 7?? 正确使用索引 一、索引未命中 并不是说我们创建了索引就一定会加快查询速度,若想利用索引达到预想的提高查询速度的效果, 我们在添加索引时,必须遵循以下问题: 二、其他注意事项 8?? 联合索引与覆盖索引 一、联合索引 1、何谓联合索引? 联合索引时指对表上的多个列合起来做一个索引。联合 ...
分类:
数据库 时间:
2018-05-25 23:32:47
阅读次数:
211