diff --git a/plugins/data_query/sql_mysql.py b/plugins/data_query/sql_mysql.py index 68ac3c6ad..c5ac17434 100755 --- a/plugins/data_query/sql_mysql.py +++ b/plugins/data_query/sql_mysql.py @@ -381,6 +381,29 @@ class nosqlMySQLCtr(): return mw.returnData(False, "查询失败!") # print(data) return mw.returnData(True, 'ok', data) + + def redundantIndexesCmd(self, args): + sid = args['sid'] + my_instance = self.getInstanceBySid(sid).conn() + if my_instance is False: + return mw.returnData(False,'无法链接') + + is_performance_schema = my_instance.find("SELECT @@performance_schema") + if is_performance_schema["@@performance_schema"] == 0: + msg = "performance_schema参数未开启。\n" + msg += "在my.cnf配置文件里添加performance_schema=1,并重启mysqld进程生效。" + return mw.returnData(False, msg) + + data = my_instance.query("select table_schema,table_name,redundant_index_name,redundant_index_columns,sql_drop_index from sys.schema_redundant_indexes") + if data is None: + return mw.returnData(False, "查询失败!") + + index = int(args['index']) + + cmd = data[index]['sql_drop_index'] + + my_instance.execute(cmd) + return mw.returnData(True, '执行成功!') # ---------------------------------- run ---------------------------------- # 获取 mysql 列表 def get_db_list(args): @@ -423,6 +446,11 @@ def get_redundant_indexes(args): t = nosqlMySQLCtr() return t.getRedundantIndexes(args) +# 查看重复或冗余的索引 +def redundant_indexes_cmd(args): + t = nosqlMySQLCtr() + return t.redundantIndexesCmd(args) + diff --git a/plugins/data_query/static/js/app.js b/plugins/data_query/static/js/app.js index b5c65d95f..36c07f127 100755 --- a/plugins/data_query/static/js/app.js +++ b/plugins/data_query/static/js/app.js @@ -438,11 +438,22 @@ function mysqlCommonFuncRedundantIndexes(){ t += ''+items[i]['redundant_index_name']+''; t += ''+items[i]['redundant_index_columns']+''; t += ''+items[i]['sql_drop_index']+''; - t += '执行'; + t += '执行'; t += ''; tbody += t; } $('#redundant_indexes tbody').html(tbody); + $('#redundant_indexes tbody .exec').click(function(){ + var index = $(this).attr('index'); + myPostCB('redundant_indexes_cmd', {'sid':sid, 'index':index}, function(rdata){ + var data = rdata.data; + showMsg(data.msg,function(){ + if (data.status){ + renderSQL(); + } + },{icon: data.status ? 1 : 2}, 2000); + }); + }); } else { layer.msg(data.msg,{icon:2}); }