今天遇到需要在MyCat上查看SQL执行计划,实践之后记录一下:
一、MySql查看执行计划
## 使用explain关键字可以模拟优化器执行SQL查询语句。
EXPLAIN SELECT COUNT(*) FROM TEST_EXPLAIN_MYSQL WHERE USER_ID = 123456789;
二、MyCat查看执行计划,和单数据库语法不一样
## 1、查看路由信息DATA_NODE EXPLAIN + sql
EXPLAIN SELECT COUNT(*) FROM TEST_EXPLAIN_MYCAT WHERE USER_ID = 123456789;
## 2、explain2 datanode=数据节点 sql=sql语句
EXPLAIN2 datanode=dn389 SQL=SELECT COUNT(*) FROM TEST_EXPLAIN_MYCAT WHERE USER_ID = 123456789;
三、COUNT函数的用法
1、COUNT函数的用法,主要用于统计表行数。主要用法有COUNT(*)、COUNT(字段)和COUNT(1)。
2、在InnoDB中COUNT(*)和COUNT(1)实现上没有区别,而且效率一样,但是COUNT(字段)需要进行字段的非NULL判断,所以效率会低一些。
因为COUNT(*)是SQL92定义的标准统计行数的语法,并且效率高,所以请直接使用COUNT(*)查询表的行数