赞
踩
select * from USER_TABLE join ORDER_TABLE where USER_TABLE.id=123 and ORDER_TABLE.statu=1;
上面的语句执行:
select * from USER_TABLE where ID=6;
如果没有权限则会报如下错误:
ERROR 5345 (5356767): SELECT command denied to user ‘king’@‘localhost' for table ‘USER_TABLE’
如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表引擎的定义,去使用这个引擎提供的接口。
select * from USER_TABLE where ID=6 and name ="张三";
字段ID有索引, 而name没有索引,那么直接通过索引数据结构找到id=6的行记录,然后返回到server层,判断name的值是否是”张三“,如果是将这一行的值返回给客户端;
select * from ORDER_TABLE where statu=1;
对于上面的sql来说没有索引,执行器的执行流程就是普通的查找过程:
explain select * from ORDER_TABLE where statu=1;
看当前的sql是否走了索引,扫描了多少行的记录,做到心中有数,否则对于高并发的线上引起的慢查询也不是好玩儿的。比如rows_examined字段,记录了语句执行过程中扫描了多少行记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。