mysql怎么查分库效率 mysql 分库分表操作( 二 )


那对于两者优缺点的比较:
1.对于具有2个用and连接条件的语句,且2个列之间的关联度较低的情况下,复合索引有一定优势 。
2.对于具有2个用and连接条件的语句,且2个列之间的关联度较高的情况下,复合索引有很大优势 。
3.对于具有2个用or连接条件的语句,单索引有一定优势,因为这种情况下复合索引将会导致全表扫描,而前者可以用到indexmerge的优化 。

mysql数据库如何提高查询效率 , 单表记录数有几亿条,指定索引效率还是很慢mysql单表几条数据 , 你这么复杂的SQL还能出得来已经很不错了 。可以考虑分表分库了 , mysql单表数据到千万级别性能就下降,。单表这么大的数据 , 怎么优化都会有点点慢 。
MySQL中如何查看“慢查询”,如何分析执行SQL的效率?一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句
1,slow_query_log
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句 。
2 , long_query_time
当SQL语句执行时间超过此数值时,就会被记录到日志中 , 建议设置为1或者更短 。
3,slow_query_log_file
记录日志的文件名 。
4 , log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句 , 尽管这个SQL语句有可能执行得挺快 。
二、检测mysql中sql语句的效率的方法
1、通过查询日志
(1)、Windows下开启MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上
代码如下
log-slow-queries = F:/MySQL/log/mysqlslowquery 。log
long_query_time = 2
(2)、Linux下启用MySQL慢查询
MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上
代码如下
log-slow-queries=/data/mysqldata/slowquery 。log
long_query_time=2
说明
log-slow-queries = F:/MySQL/log/mysqlslowquery 。
为慢查询日志存放的位置 , 一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录;
【mysql怎么查分库效率 mysql 分库分表操作】long_query_time=2中的2表示查询超过两秒才记录;
2.show processlist 命令
SHOW PROCESSLIST显示哪些线程正在运行 。您也可以使用mysqladmin processlist语句得到此信息 。
各列的含义和用途:
ID列
一个标识,你要kill一个语句的时候很有用,用命令杀掉此查询 /*/mysqladmin kill 进程号 。
user列
显示单前用户,如果不是root , 这个命令就只显示你权限范围内的sql语句 。
host列
显示这个语句是从哪个ip的哪个端口上发出的 。用于追踪出问题语句的用户 。
db列
显示这个进程目前连接的是哪个数据库 。
command列
显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect) 。
time列
此这个状态持续的时间,单位是秒 。
state列
显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个 sql语句,以查询为例 , 可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
info列
显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据 。
这个命令中最关键的就是state列,mysql列出的状态主要有以下几种:

推荐阅读