drop table if exists t1; CREATE TABLE t1 ( a char(5) NOT NULL, b char(4) NOT NULL, KEY (a), KEY (b) ) charset utf8mb4; INSERT INTO t1 VALUES ('A','B'),('b','A'),('C','c'),('D','E'),('a','a'); select * from t1,t1 as t2; a b a b a a A B D E A B C c A B b A A B A B A B a a b A D E b A C c b A b A b A A B b A a a C c D E C c C c C c b A C c A B C c a a D E D E D E C c D E b A D E A B D E a a a a D E a a C c a a b A a a A B a a analyze table t1; Table Op Msg_type Msg_text test.t1 analyze status OK explain select t1.*,t2.* from t1,t1 as t2 where t1.A=t2.B; id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE t1 NULL ALL a NULL NULL NULL # # NULL 1 SIMPLE t2 NULL ref b b 16 test.t1.a # # Using index condition Warnings: Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` join `test`.`t1` `t2` where (`test`.`t1`.`a` = `test`.`t2`.`b`) select t1.*,t2.* from t1,t1 as t2 where t1.A=t2.B order by binary t1.a,t2.a; a b a b A B a a A B b A C c C c a a a a a a b A b A A B select * from t1 where a='a'; a b A B a a drop table t1;