mysql 索引优化 type为ref和index的区别 一.帮助优化器更好地利用索引策略: 1.尽量比较数据类型相同的数据列。当你在比较操作中使用索引数据列的时候,请使用数据类型相同的列。相同的数据类型比不同类型的性能要高一些。例如,INT 与BIGINT是不同的。CHAR(10)被认为是CHAR(10)或VARCHAR(10),但是与CHAR(12)或VA...
上面SQL执行时,表jiang是驱动表,lock_test是被驱动表,被驱动表上走的是非唯一索引,type类型为ref。 所以ref的特点是:表示这一步访问数据使用的索引是非唯一索引。 5、Ref_or_null 例如执行下面语句: 表示走了索引(num列上有索引),但是也访问了空值。 6、index_merge 表示索引合并,一般对多个二级索引列做or操...
eq_ref 类型是使用主键或唯一索引时产生的访问方式,通常使用在多表联查中。比如,对两张表进行联查,关联条件是两张表的 user_id 相等,且 user_id 是唯一索引,那么使用 EXPLAIN 进行执行计划查看的时候,type 就会显示 eq_ref。 const 类型表示使用了主键或者唯一索引与常量值进行比较,比如 select name from produ...
type: index这种类型表示MySQL会对整个该索引进行扫描。只要是索引,或者某个联合索引的一部分,MySQL都可能会采用index类型的方式扫描。不过效率不高,按索引次序扫描,先读索引,再读实际的行,结果还是全表扫描,主要优点是避免了排序,因为索引是排好的。type: ref这种类型表示MySQL会根据特定的算法快速查找到某个...
删除某张表的索引:DROP INDEX索引名 ON 表名; 四、EXPLAIN 分析SQL执行的状态 EXPLAIN列的解释 table 显示这一行的数据是关于哪张表的 type 这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
所以ref的特点是:表示这一步访问数据使用的索引是非唯一索引。 5、Ref_or_null 例如执行下面语句: 表示走了索引(num列上有索引),但是也访问了空值。 6、index_merge 表示索引合并,一般对多个二级索引列做or操作时就会发生索引合并。 例如执行下列语句: ...
type列指定了本数据表与其它数据表之间的关联 关系(JOIN)。在各种类型的关联关系当中,效率最高的是system,然后依次是const、eq_ref、ref、range、index和 All(All的意思是:对应于上一级数据表里的每一条记录,这个数据表里的所有记录都必须被读取一遍–这种情况往往可以用一索引来避免)。
type=index,索引全扫描,MySQL遍历整个索引来查询匹配的行:select username from user;type=ref,使用非唯一索引扫描或唯一索引的前缀扫描,返回匹配某个单独值的记录行,例如:select * from user where username = '张三';个人理解:看你有没有加where条件吧,加了where就要匹配记录行。另外本人也测试...
5、Ref_or_null 例如执行下面语句: 表示走了索引(num列上有索引),但是也访问了空值。 6、index_merge 表示索引合并,一般对多个二级索引列做or操作时就会发生索引合并。 例如执行下列语句: mysql> explain select * from lock_test where id=3 or num=4; ...
5、Ref_or_null例如执行下面语句: 表示走了索引(num列上有索引),但是也访问了空值。 6、index_merge 表示索引合并,一般对多个二级索引列做or操作时就会发生索引合并。 例如执行下列语句: mysql> explain select * from lock_test where id=3 or num=4; ...