QSQL ๆฏไธไธชๅธฎๅฉไฝ ๅๆ mysql ๆฅ่ฏข่ฏญๅฅๅนถไผๅ็ๅฐๅทฅๅ
ท๏ผๅ็ๆฏไฝฟ็จ explain ๆง่ก่ฎกๅใ
public class QSqlTest {
private QSql qSql;
@Before
public void before(){
String url = "jdbc:mysql://127.0.0.1:3306/annal";
String user = "root";
String pass = "123456";
Config config = new Config(url, user, pass);
qSql = new QSql(config);
}
private final String SQL1 = "select * from t_user where username in (select username from t_topic where stars > 0)";
@Test
public void test1(){
qSql.analyze(SQL1);
}
}โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ QSQL v1.0 (by biezhi) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Basic Infomation โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ host โ user_name โ db_name โ db_version โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 127.0.0.1 โ root โ annal โ 5.7.15 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ System Paramter โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ parameter โ value โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ binlog_cache_size โ 32768 โ
โ bulk_insert_buffer_size โ 8388608 โ
โ have_query_cache โ YES โ
โ interactive_timeout โ 28800 โ
โ join_buffer_size โ 262144 โ
โ key_buffer_size โ 8388608 โ
โ key_cache_age_threshold โ 300 โ
โ key_cache_block_size โ 1024 โ
โ key_cache_division_limit โ 100 โ
โ large_pages โ OFF โ
โ locked_in_memory โ OFF โ
โ long_query_time โ 10.000000 โ
โ max_allowed_packet โ 4194304 โ
โ max_binlog_cache_size โ 18446744073709547520 โ
โ max_binlog_size โ 1073741824 โ
โ max_connections โ 151 โ
โ max_connect_errors โ 100 โ
โ max_join_size โ 18446744073709551615 โ
โ max_length_for_sort_data โ 1024 โ
โ max_seeks_for_key โ 18446744073709551615 โ
โ max_sort_length โ 1024 โ
โ max_tmp_tables โ 32 โ
โ max_user_connections โ 0 โ
โ optimizer_prune_level โ 1 โ
โ optimizer_search_depth โ 62 โ
โ query_cache_size โ 1048576 โ
โ query_cache_type โ OFF โ
โ query_prealloc_size โ 8192 โ
โ range_alloc_block_size โ 4096 โ
โ read_buffer_size โ 131072 โ
โ read_rnd_buffer_size โ 262144 โ
โ sort_buffer_size โ 262144 โ
โ sql_mode โ ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,N โ
โ โ O_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_US โ
โ โ ER,NO_ENGINE_SUBSTITUTION โ
โ thread_cache_size โ 9 โ
โ tmp_table_size โ 16777216 โ
โ wait_timeout โ 28800 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Optimizer Switch โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ switch_name โ value โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ index_merge โ on โ
โ index_merge_union โ on โ
โ index_merge_sort_union โ on โ
โ index_merge_intersection โ on โ
โ engine_condition_pushdown โ on โ
โ index_condition_pushdown โ on โ
โ mrr โ on โ
โ mrr_cost_based โ on โ
โ block_nested_loop โ on โ
โ batched_key_access โ off โ
โ materialization โ on โ
โ semijoin โ on โ
โ loosescan โ on โ
โ firstmatch โ on โ
โ duplicateweedout โ on โ
โ subquery_materialization_cost_based โ on โ
โ use_index_extensions โ on โ
โ condition_fanout_filter โ on โ
โ derived_merge โ on โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
>>>> original sql <<<<
------------------------------------------------------------------------------------------------------------------------
select
*
from
t_user
where
username
in (
select
username from
t_topic
where
stars > 0
)
------------------------------------------------------------------------------------------------------------------------
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ explain report โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id โ select_type โ table โ partitions โ type โ possible_keys โ key โ key_len โ ref โ rows โ filtered โ Extra โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 1 โ SIMPLE โ t_user โ โ ALL โ PRIMARY โ โ โ โ 3 โ 100.0 โ โ
โ 1 โ SIMPLE โ t_topic โ โ ALL โ โ โ โ โ 21 โ 4.76 โ Using where; โ
โ โ โ โ โ โ โ โ โ โ โ โ FirstMatch(t_user); โ
โ โ โ โ โ โ โ โ โ โ โ โ Using join buffer (Block โ
โ โ โ โ โ โ โ โ โ โ โ โ Nested Loop) โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ explain message report โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ level โ code โ message โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Warning โ 1681 โ 'EXTENDED' is deprecated and will be removed in a future release. โ
โ Note โ 1003 โ /* select#1 */ select `annal`.`t_user`.`username` AS `username`,`annal`.`t_user`.`password` AS `password`,`annal`.`t_user`.`nickname` AS `nickname`,`annal`.`t_user`.`email` โ
โ โ โ AS `email`,`annal`.`t_user`.`avatar` AS `avatar`,`annal`.`t_user`.`signature` AS `signature`,`annal`.`t_user`.`followers` AS `followers`,`annal`.`t_user`.`following` AS โ
โ โ โ `following`,`annal`.`t_user`.`topics` AS `topics`,`annal`.`t_user`.`privated` AS `privated`,`annal`.`t_user`.`state` AS `state`,`annal`.`t_user`.`created` AS โ
โ โ โ `created`,`annal`.`t_user`.`logined` AS `logined` from `annal`.`t_user` semi join (`annal`.`t_topic`) where ((`annal`.`t_topic`.`stars` > 0) and โ
โ โ โ (`annal`.`t_user`.`username` = `annal`.`t_topic`.`username`)) โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
:: optimizer sql ::
select
`annal`.`t_user`.`username`
AS
`username`,`annal`.`t_user`.`password`
AS
`password`,`annal`.`t_user`.`nickname`
AS
`nickname`,`annal`.`t_user`.`email`
AS
`email`,`annal`.`t_user`.`avatar`
AS
`avatar`,`annal`.`t_user`.`signature`
AS
`signature`,`annal`.`t_user`.`followers`
AS
`followers`,`annal`.`t_user`.`following`
AS
`following`,`annal`.`t_user`.`topics`
AS
`topics`,`annal`.`t_user`.`privated`
AS
`privated`,`annal`.`t_user`.`state`
AS
`state`,`annal`.`t_user`.`created`
AS
`created`,`annal`.`t_user`.`logined`
AS
`logined`
from
`annal`.`t_user` semi
join
(
`annal`.`t_topic`
)
where
(
(
`annal`.`t_topic`.`stars` > 0
)
and (
`annal`.`t_user`.`username` = `annal`.`t_topic`.`username`
)
)
analyze finished.- id: SELECT ๆฅ่ฏข็ๆ ่ฏ็ฌฆ. ๆฏไธช SELECT ้ฝไผ่ชๅจๅ้ ไธไธชๅฏไธ็ๆ ่ฏ็ฌฆ.
- select_type: SELECT ๆฅ่ฏข็็ฑปๅ.
- table: ๆฅ่ฏข็ๆฏๅชไธช่กจ
- partitions: ๅน้ ็ๅๅบ
- type: join ็ฑปๅ
- possible_keys: ๆญคๆฌกๆฅ่ฏขไธญๅฏ่ฝ้็จ็็ดขๅผ
- key: ๆญคๆฌกๆฅ่ฏขไธญ็กฎๅไฝฟ็จๅฐ็็ดขๅผ.
- ref: ๅชไธชๅญๆฎตๆๅธธๆฐไธ key ไธ่ตท่ขซไฝฟ็จ
- rows: ๆพ็คบๆญคๆฅ่ฏขไธๅ ฑๆซๆไบๅคๅฐ่ก. ่ฟไธชๆฏไธไธชไผฐ่ฎกๅผ.
- filtered: ่กจ็คบๆญคๆฅ่ฏขๆกไปถๆ่ฟๆปค็ๆฐๆฎ็็พๅๆฏ
- extra: ้ขๅค็ไฟกๆฏ
select_type ่กจ็คบไบๆฅ่ฏข็็ฑปๅ, ๅฎ็ๅธธ็จๅๅผๆ:
SIMPLE, ่กจ็คบๆญคๆฅ่ฏขไธๅ ๅซUNIONๆฅ่ฏขๆๅญๆฅ่ฏขPRIMARY, ่กจ็คบๆญคๆฅ่ฏขๆฏๆๅคๅฑ็ๆฅ่ฏขUNION, ่กจ็คบๆญคๆฅ่ฏขๆฏUNION็็ฌฌไบๆ้ๅ็ๆฅ่ฏขDEPENDENT UNION,UNIONไธญ็็ฌฌไบไธชๆๅ้ข็ๆฅ่ฏข่ฏญๅฅ, ๅๅณไบๅค้ข็ๆฅ่ฏขUNION RESULT,UNION็็ปๆSUBQUERY, ๅญๆฅ่ฏขไธญ็็ฌฌไธไธชSELECTDEPENDENT SUBQUERY: ๅญๆฅ่ฏขไธญ็็ฌฌไธไธชSELECT, ๅๅณไบๅค้ข็ๆฅ่ฏข. ๅณๅญๆฅ่ฏขไพ่ตไบๅคๅฑๆฅ่ฏข็็ปๆ.