From c2a054489ce2151b6041d320361c0f8efd7a8eb5 Mon Sep 17 00:00:00 2001 From: Leon Zhang Date: Sat, 5 Jan 2019 22:20:22 +0800 Subject: [PATCH] fix #178 JSON datatype only support utf8mb4 and other issues (#180) * fix #178 JSON datatype only support utf8mb4 now * splitstatement support optimizer hint https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html https://dev.mysql.com/doc/refman/8.0/en/comments.html * vendor daily update * format explain suggestion content --- advisor/index.go | 2 +- database/explain.go | 8 ++++---- vendor/vendor.json | 28 ++++++++++++++-------------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/advisor/index.go b/advisor/index.go index e664cff..d1351cf 100644 --- a/advisor/index.go +++ b/advisor/index.go @@ -978,7 +978,7 @@ func (idxAdvs IndexAdvises) Format() map[string]Rule { if common.Config.Sampling { cardinal := fmt.Sprintf("%0.2f", col.Cardinality*100) if cardinal != "0.00" { - rules[advKey].Content += fmt.Sprintf("为列%s添加索引,散粒度为: %s%%; ", + rules[advKey].Content += fmt.Sprintf("为列%s添加索引,散粒度为: %s%%; ", col.Name, cardinal) } } else { diff --git a/database/explain.go b/database/explain.go index 7b0c6c8..75c3f72 100644 --- a/database/explain.go +++ b/database/explain.go @@ -302,14 +302,14 @@ var ExplainSelectType = map[string]string{ // ExplainAccessType EXPLAIN中ACCESS TYPE会出现的类型 var ExplainAccessType = map[string]string{ "system": "这是const连接类型的一种特例, 该表仅有一行数据(=系统表).", - "const": `const用于使用常数值比较PRIMARY KEY时, 当查询的表仅有一行时, 使用system. 例:SELECT * FROM tbl WHERE col =1.`, - "eq_ref": `除const类型外最好的可能实现的连接类型. 它用在一个索引的所有部分被连接使用并且索引是UNIQUE或PRIMARY KEY, 对于每个索引键, 表中只有一条记录与之匹配. 例:'SELECT * FROM ref_table,tbl WHERE ref_table.key_column=tbl.column;'.`, + "const": `const用于使用常数值比较PRIMARY KEY时, 当查询的表仅有一行时, 使用system. 例:SELECT * FROM tbl WHERE col = 1.`, + "eq_ref": `除const类型外最好的可能实现的连接类型. 它用在一个索引的所有部分被连接使用并且索引是UNIQUE或PRIMARY KEY, 对于每个索引键, 表中只有一条记录与之匹配. 例: 'SELECT * FROM RefTbl, tbl WHERE RefTbl.col=tbl.col;'.`, "ref": `连接不能基于关键字选择单个行, 可能查找到多个符合条件的行. 叫做ref是因为索引要跟某个参考值相比较. 这个参考值或者是一个数, 或者是来自一个表里的多表查询的结果值. 例:'SELECT * FROM tbl WHERE idx_col=expr;'.`, "fulltext": "查询时使用 FULLTEXT 索引.", "ref_or_null": "如同ref, 但是MySQL必须在初次查找的结果里找出null条目, 然后进行二次查找.", "index_merge": `表示使用了索引合并优化方法. 在这种情况下. key列包含了使用的索引的清单, key_len包含了使用的索引的最长的关键元素. 详情请见 8.2.1.4, “Index Merge Optimization”.`, - "unique_subquery": `在某些IN查询中使用此种类型,而不是常规的ref:'value IN (SELECT primary_key FROM single_table WHERE some_expr)'.`, - "index_subquery": "在某些IN查询中使用此种类型, 与unique_subquery类似, 但是查询的是非唯一索引性索引.", + "unique_subquery": `在某些IN查询中使用此种类型,而不是常规的ref:'value IN (SELECT PrimaryKey FROM SingleTable WHERE SomeExpr)'.`, + "index_subquery": "在某些IN查询中使用此种类型, 与 unique_subquery 类似, 但是查询的是非唯一索引性索引.", "range": `只检索给定范围的行, 使用一个索引来选择行. key列显示使用了哪个索引. key_len包含所使用索引的最长关键元素.`, "index": "全表扫描, 只是扫描表的时候按照索引次序进行而不是行. 主要优点就是避免了排序, 但是开销仍然非常大.", "ALL": `最坏的情况, 从头到尾全表扫描.`, diff --git a/vendor/vendor.json b/vendor/vendor.json index b00719f..72445dc 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -173,44 +173,44 @@ { "checksumSHA1": "MxoLdFWi8nwd0uqTJnYqw+JaDAY=", "path": "github.com/pingcap/tidb/sessionctx/stmtctx", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "wlD7aGqTJ5eBQYK0ub4b2Ick1j8=", "path": "github.com/pingcap/tidb/types", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "DWVD7+ygtT66IQ+cqXmMJ5OVqUk=", "path": "github.com/pingcap/tidb/types/json", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "6vi/eCZXqNTa5eAUpxDZet4LPlY=", "path": "github.com/pingcap/tidb/types/parser_driver", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "SS7twHZofFKr8w/pwIKmkp3u5qU=", "path": "github.com/pingcap/tidb/util/execdetails", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "nUC7zVoAMNR2a+z2iGqHoN2AkFE=", "path": "github.com/pingcap/tidb/util/hack", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "xSyepiuqsoaaeDch7cXeumvVHKM=", "path": "github.com/pingcap/tidb/util/memory", - "revision": "081a2c5cccf4d82ca2ad33cdc9f2f21d3319e2d5", - "revisionTime": "2019-01-05T02:32:10Z" + "revision": "78a51a4626999279749c460f3f42a2e92897c2e3", + "revisionTime": "2019-01-05T13:32:32Z" }, { "checksumSHA1": "SmYeIK/fIYXNu8IKxD6HOVQVTuU=", -- GitLab