什么是 Percona MySQL 5.6 提示

分类:编程技术 时间:2024-02-20 15:42 浏览:0 评论:0
0
什么是 Percona MySQL 5.6 提示?相信很多没有经验的人都一头雾水。本文总结了问题的原因和解决方案。通过这篇文章,希望你能解决这个问题。

SQL_BUFFER_RESULT
将强制将查询结果放入临时表中。这有助于MySQL在结果集发送到客户端需要较长时间时尽早释放表锁。此提示仅用于最外层的 SELECT 语句,不适用于子查询或 UNION 语句。

mysql> 解释 select * from test;
+----+-------------+--------+-- ---+-------------+------------------+--------- +------+------+-------------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+------------+--------+--------+-------- -- -------+-----------------+---------+------+---- -- +-------------+
| 1 |简单|测试|索引 |空| idx_test_id_name | idx_test_id_name | 23 | 23空| 5 |使用索引 |
+-- --+------------+--------+--------+----------------+---- --------------+--------- +------+--------+------------ --+
集合中的 1 行(0.00 秒)
mysql> 解释 select SQL_BUFFER_RESULT * from test;
+----+------------ -+--------+--------+------ ---------+---------------- --+---------+------+---- --+------------------------ ----------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 ---------------+--------------------+---------+---- -- +------+--------------------------------+
| 1 |简单|测试|索引 |空| idx_test_id_name | idx_test_id_name | 23 | 23空| 5 |使用索引;使用临时 |
+----+------------+--------+--------+ -------- ------+------------------+---------+----- -+----- -+--------------------------------+
1 行一组(0.00 秒)
/>

STRAIGHT_JOIN
将强制优化器按照FROM后面的表的顺序进行连接。如果优化器以不适当的顺序连接表,您可以使用此技巧来加快速度提出您的查询。 STRAIGHT_JOIN 提示不适用于执行计划中 const 或 system 类型的表。

mysql> 解释 select e.* from emp e join dept d on e.deptno=d.deptno;
+----+---------- ---+--------+--------+----------------+---------+---- ------+------+------+---------------------------- ---- ----------------------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |行 |br/> +----+-------------+--------+--------+--------- ------+---------+----------+------+--------+-------- --- ---------------------------------------------------------- ---+
| 1 |简单| d |索引 |小学 |小学 | 4 |空| 5 |使用索引|
| 1 |简单|电子|全部 |空|空|空|空| 14 | 14使用地点;使用连接缓冲区(块嵌套循环) |
+----+------------------------+--------+--------+- ------ --------+---------+---------+-----+------+- -------------------------------------------------------- ------ -------+
集合中有 2 行(0.00 秒)
mysql> expla在 select STRAIGHT_JOIN e.* from emp e join dept d on e.deptno=d .deptno;
+----+------------+----- --+--------+------ ---------+---------+---------+-- -------------+---- --+-------------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+--- -+------------+--------+--------+-------- -------+- --------+---------+--------------+-----+ -------- -----+
| 1 |简单|电子|全部 |空|空|空|空| 14 | 14使用位置 |
 | 1 |简单| d | eq_ref |小学 |小学 | 4 |测试.e.deptno | 1 |使用索引 |
+----+------------ -+--------+--------+-------- ----+----------+----- ----+----------------+--------+- ------------+
集合中有2行(0.00秒)


USE INDEX
告诉MySQL使用指定的索引。当 MySQL 使用错误的索引时,此技巧会很有用。

mysql> 显示测试中的键;
+--------+------------+--------- ----------+--------------+-------------+---------+ --------------+----------+--------+------+-------- ----+---------+------------- -+
|表|非唯一 |键名 |索引中的序列 |列名 |整理 |基数 |子部分 |包装 |空|索引_类型 |评论 | Index_comment |
+--------+------------+------------ ------+--- -----------+-------------+------------+------------ -+----------+--------+------+-------- -----+-------- -+----------------+
|测试| 1 | idx_test_id_name | idx_test_id_name | 1 个 ID |一个 | 5 |空|空|是 | BTREE | |
|测试| 1 | idx_test_id_name | idx_test_id_name | 2 |名称 |一个 | 5|空|空|是 | BTREE | |
|测试| 1 | idx_测试_id | 1 id                                                                                 | nbsp; 1 |名称 |一个 | 5 |空|空|是 | BTREE | |
+--------+------------+---- --------------+---- ----------+-------------+------ -----+------------- +----------+--------+------+--- ----------+-------- -+---------------+
集合中的 4 行(0.00 秒)
mysql> 解释 select count(*) from test;
+----+-------------+--------+----- --+--------- ------+-------------+---------+------+ ------+----- --------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外   |
+----+------------+--------+--------+-------- - -------+-------------+---------+--------+--------+--- - ---------+
| 1 |简单|测试|索引 |空| idx_测试_id | 5 |空| 5 |使用索引 |
+----+--- ----------+--------+--------+-------- --------+-------- ------+--------+--------+--------+--- ----------+
集合中的 1 行(0.00 秒)
mysql> 解释 select count(*) from test use index (idx_test_name);
+-- --+------------- +--------+--------+----------------+- --------------+- --------+------+-----+------------ --+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+-------------+-----+-------+--------- ------+----------------+---------+-----+--------+--- ----------+
| 1 |简单|测试|索引 |空| idx_test_nam电子| 18 | 18空| 5 |使用索引 |
+----+------------+--------+--------+- ------ --------+----------------+---------+-----+-- ----+ -------------+
集合中的 1 行(0.00 秒)
mysql> 解释 select count(*) from test use index (idx_test_id_name) ;
+----+-------------+--------+--------+--------- ----- ------------------+---------+------+------+ ----- --------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+- ------------+--------+--------+-------- -------+----- -------------+---------+-----+-------- +------------ -+
| 1 |简单 |测试|索引 |空| idx_test_id_name | idx_test_id_name | 23 | 23空| 5 |使用索引 |
+----+------------+-------- -+--------+-------- ------+------------------+----- ----+------+----- -+-------------+
集合中的1行(0.00秒)


IGNORE INDEX
告诉MySQL不要使用指定的索引。当 MySQL 使用错误的索引时,此技巧会很有用。

mysql> 显示部门的密钥;
+--------+------------+--------- -+------------+ ------------+------------+-------- ------+------------ +--------+------+------------+--- ------+------------ ---+
|表|非唯一 |键名 |索引中的序列 |列名 |整理 |基数 |子部分 |包装 |空|索引_类型 |评论 | Index_comment |
+--------+------------+------------+--------- -- ---+-------------+------------+------------+---- -- ----+--------+------+------------+---------+---- -- ---------+
|部门 | 0 |小学 | 1 |部门 |一个 |空|空| BTREE |
+--------+------------ -+------------+------------- -+-------------+-------- ---+----------------+-------- --+--------+------+----- -------+---------+-------- -------+
集合中的 1 行(0.00 秒)
mysql> 解释 select deptno from dept;
+----+-------- ----+--------+--------+-- -------------+---------+-- -------+------+------+-- -----------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外|
+----+-------------+--------+-------+---------------- --+---------+---------+------+----- -+---------------- +
| 1 |简单|部门 |索引 |空|小学 | 4 |空| 5 |使用索引 |
+--- -+------------+--------+--------+-------- --------+-- -------+--------+--------+--------+-------- ------+
集合中的 1 行(0.00 秒)
mysql> 解释 select deptno from dept 忽略索引 (PRIMARY);
+----+---- ------+- ------+------+----------------+--------+-- -------+--- ---+------+-----+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+- ---+-------------+--------+------+--------- ------+- -----+---------+------+-----+--------+
|1 |简单|部门 |全部 |空|空|空|空| 5 | NULL |
+----+-------------+-------+------+--------- ------+-----+---------+------+- -----+--------+
1 行一组(0.00 秒)


FORCE INDEX
与 USE INDEX 类似。该提示将导致查询始终使用索引,除非 t表的查询条件不能使用表中的索引。

mysql> 显示 buy_log 中的密钥;
+---------+------------+-------- ---+-------------+-------------+------------+----- - -------+----------+--------+------+---------------- -+- --------+----------------+
|表|非唯一 |键名 |索引中的序列 |列名 |整理 |基数 |子部分 |包装 |空|索引_类型 |评论 | Index_comment |
+---------+------------+------------+----- ---- ------+-------------+----------+----------------+ ----- ------+--------+------+----------------+--------------------+ - --------------+
|购买日志 | 1 |用户 ID | 1 |用户 ID |一个 | 7 |空|空| BTREE | BTREE | |
|购买日志 | 1 | userid_2 |; | |
+---------+--- ---------+---------+------------ ----+-------------+ ----------+-------------+-------- ----+--------+---- --+----------------+--------------------+-- -------------+
集合中的 3 行(0.00 秒)

mysql> 解释 select * 来自 buy_log force index(userid) where userid=1;
+-- --+------------ -+---------+------+----------------+--------+-------- ---+--------+------+ -------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外|
+----+------ ------+---------+-----+-------- -------+--------+- --------+--------+-----+--------+
| 1 |简单|购买日志 |参考| 用户ID | 用户ID | 4 |常量 | 4 | NULL |
+----+-------------+----- ----+------+-------- --------+--------+----------+--- ----+-----+-------- -+
集合中的 1 行(0.00 秒)

mysql> 解释 select * from buy_log 强制索引(userid_2) where userid=1;
+----+-------------+---------+-- ----+------------- --+----------+---------+--------+ ------+------------ --+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len|参考|行 |额外 |
+----+-------------+---------+-----+-- ----- --------+----------+---------+--------+------+ -------------+
| 1 |简单|购买日志 |参考| userid_2 | userid_2| 4 |常量 | 4 |使用索引 |
+----+-------------+---------+-----+----- - --------+----------+---------+--------+--------+--- - ---------+
集合中的 1 行(0.00 秒)

mysql> 显示 emp 中的键;
+------- + ------------+----------------+--------------+---- - --------+------------+-------------+------------+--- - ---+------+------------+---------+--------------+
|表|非唯一 |键名 |索引中的序列 |列名 |整理 |基数 |子部分 |包装 |空|索引_类型 |评论 | Index_comment |
+--------+---- --------+----------------+----- ------+-------------+------------+----- --------+- ---------+--------+------+----------------+- ------ --+----------------+
|员工| 0 |小学 | 1 |员工号 |一个 | 14 | 14空|空| BTREE |7 |空|空|是 | BTREE | |
+--------+------------+------------ ----+-------- --------+-------------+------------+---- ---------+- ---------+--------+------+------------+ ----------+ ---------------+
集合中的2行(0.00秒)

mysql> 解释 select * from emp e 强制索引(PRIMARY) join e.deptno=d.deptno 上的部门 d;
+----+-------------+----- --+------+ ---------------+------+----------+-----+ ------+-- ----------------------------------------------------------- --- ------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外的; | ------+------+---------+------+-----+------------ ----------------------------------------------------+
| 1 |简单|电子|全部 |空|空|空|空| 14 | 14空|全部 |空|
| 1 |简单| d |全部 |小学 |空|空|空| 5 |使用地点;使用连接缓冲区(块 NestedLoop)|
+----+-------------+-------+------+--- ----- -------+------+---------+------+-----+------------ ---- ----------------------------------------------------------------------+
集合中的 2 行(0.00 秒)

mysql> 解释 select * from emp e force index(idx_emp_deptno) join dept d on e.deptno=d.deptno;
+--- ----------+--------+------+----------------+------ ---- ---------+---------+----------------+--------+--- ---- +
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+-------------+ -------+------+--------- -------+----------------+- --------+---------------- +------+--------+
| 1 |简单| d |全部 |小学 |空|空|空  | --------+--------+------+----------------+-------- ------+---------+----------------+-----+--------+
集合中的 2 行(0.00 秒)

mysql> 显示测试中的键;
+-------+---------- --+----------------+-------------+------------- + -----------+-------------+----------+--------+--- - --+----------------+---------+----------------+
|表|非唯一 |钥匙_名称 |索引中的序列 |列名 |整理 |基数 |子部分 |包装 |空|索引_类型 |评论 | Index_comment |
+--------+------------+ ------------------+--- -----------+-------------+-- ---------+------------ -+----------+--------+------ +----------------+---- ------+----------------+
|测试| 1 | idx_test_id_name | idx_test_id_name | 1 |编号 |一个 | 5 |是 | BTREE | | |
|测试| 1 | idx_test_id_name | idx_test_id_name |姓名 2 |名称 |是 | BTREE                                          |超低损耗 |是 | BTREE | |
|测试| 1 | idx_测试名称 | 1 |姓名|一个 | 5 |空|空|是 | BTREE |
+--------+------------+--------- ---------+----- ----------+-------------+---------- +----------------+- ---------+--------+------+-------- ----+---------+- -------------+
集合中的 4 行(0.00 秒)
mysql> 解释 select * from test where id > 20;
+--- -+-------------+--------+--------+- ----------------- ---------------+------------------+- --------+----- -+------+--------------------------+
|编号 |选择_类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+-------------+-----+--------+---- ------ ------------------+----------------+---- -----+ ------+------+--------------------------+
| 1 |简单|测试|范围 | idx_test_id_name,idx_test_id | idx_test_id_name,idx_test_id | idx_test_id_name | idx_test_id_name | 5 |空| 3 |使用地点;使用索引 |
+----+------------ -+--------+--------+-------- --------------------------+- ------------------+--- ------+------+-----+-------- ------------------+
集合中的 1 行(0.00 秒)
mysql> 解释 select * from test use index (idx_test_id) where id > 20;
+----+--------- ----+--------+------+--------- ------+------+-------- --+-----+------+------------ -+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外的; |
+----+-------------+--------+-----+--------- - ------+------+---------+------+-----+------------ - +
| 1 |简单|测试|全部 | idx_测试_id |空|空|空| 5 |使用 where |
+----+----------- -+--------+------+----------------+--------+---- ------+ ------+------+-------------+
集合中的 1 行(0.00 秒)
mysql> 解释 select * from 测试力索引 (idx_test_id) where id > 20;
+----+------------+--------+ ------- +-------------+-------------+---------+---- --+-- ----+------------------------+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+------------+--------+--------+-------- -- -------+-------------+---------+--------+--------+-- -- -------------------+
| 1 |简单|测试|范围 | idx_测试_id | idx_测试_id | 5 |空| 3 |使用索引条件 |
+----+------------+-- -----+--------+-------- ------+-------------+------ ---+------+--------+-- ---------------------+
集合中的1行(0.00秒)
mysql>解释从测试力索引(idx_test_name)中选择*其中 id > 20;
+----+-------------+- ------+------+-------- ------+------+---------+--- ---+------+--------- ----+
|编号 |选择类型 |表|类型 |可能的键 |关键| key_len |参考|行 |额外 |
+----+-------------+--------+--------+------------ -----+------+---------+------+-----+------------- +
| 1 |简单|测试|全部 |空|空|空|空| 5 |使用 where |
+----+------------+--------+--------+-------- ---- ----+------+---------+------+-----+------------ ---+
1 row in set (0.00 sec)

看完上面的内容,你是否已经掌握了Percona MySQL 5.6 HINT的方法了?如果您想学习更多技能或者想了解更多相关内容,请关注行业资讯频道。感谢您的阅读!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 什么是 Percona MySQL 5.6 提示

用户评论