首页 > 数据库 >MongoDB找出冗余和未被使用的索引

MongoDB找出冗余和未被使用的索引

时间:2023-03-07 14:46:03浏览次数:40  
标签:ldb k2 MongoDB var db indexes 索引 print 冗余

找出冗余的索引

var ldb = db.adminCommand( { listDatabases: 1 } );

for ( i = 0; i < ldb.databases.length; i++ ) {

   if ( ldb.databases[i].name != 'admin' && ldb.databases[i].name != 'config' && ldb.databases[i].name != 'local') {

      print('DATABASE ',ldb.databases[i].name);
      print("+++++++++++++++++++++++++++++++++++++++++")

      var db = db.getSiblingDB(ldb.databases[i].name); 
      var cpd = db.getCollectionNames();

      for ( j = 0; j < cpd.length; j++ ) { 

         if ( cpd[j] != 'system.profile' ) {

            var indexes = JSON.parse(JSON.stringify(db.runCommand( { listIndexes: cpd[j] } ).cursor.firstBatch));
            print("COLL :"+cpd[j]);

            for ( k = 0; k < indexes.length; k++ ) {

               indexes[k] = (((JSON.stringify(indexes[k].key)).replace("{","")).replace("}","")).replace(/,/g ,"_");

            }

            var founddup = false;

            for ( k1 = 0; k1 < indexes.length; k1++ ) {

               for ( k2 = 0; k2 < indexes.length; k2++ ) {

                  if ( k1 != k2 ) {

                     if (indexes[k1].startsWith(indexes[k2],0)) {

                        print("{ "+indexes[k2]+" } is the left prefix of { "+indexes[k1]+" } and should be dropped");

                        founddup = true;

                     }
                  }
               } 
            }

            if (!founddup) {

               print("no duplicate indexes found");

            }

            print("\n");

         } 
      }

      print("\n");
   } 
}

 

找出未被使用的索引

var ldb=db.adminCommand( { listDatabases: 1 } );

   for (i=0; i<ldb.databases.length; i++) { 

      print('DATABASE ',ldb.databases[i].name);

      if ( ldb.databases[i].name != 'admin' && ldb.databases[i].name != 'config' && ldb.databases[i].name != 'local' ) {

      var db = db.getSiblingDB(ldb.databases[i].name); 
      var cpd = db.getCollectionNames();

      for (j=0; j<cpd.length; j++) {

         if ( cpd[j] != 'system.profile' ) {

            print(cpd[j]); 

            var pui = db.runCommand({ aggregate : cpd[j] ,pipeline : [{$indexStats: {}}],cursor: { batchSize: 100 } }); 
            printjson(pui);

         } 
      }

      print('\n\n'); 
   }
}

  

 

标签:ldb,k2,MongoDB,var,db,indexes,索引,print,冗余
From: https://www.cnblogs.com/abclife/p/17188050.html

相关文章

  • C# 索引器
    C#索引器 索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性,但索引器可以有参数列表,且只......
  • 【MongoDB】移除复制集成员
    1.使用rs.remove()(1)关闭mongodb实例先关闭要移除的mongodb实例db.shutdownServer()(2)连接到复制集的primary节点使用db.hello()查看复制集的信息>db.hello(){......
  • ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作
    目录ElasticSearch实现分词全文检索-概述ElasticSearch实现分词全文检索-ES、Kibana、IK安装ElasticSearch实现分词全文检索-Restful基本操作ElasticSearch......
  • MongoDB :第三章:MongoDB的数据类型与创建MongoDB数据库
    元数据数据库的信息是存储在集合中。它们使用了系统的命名空间:dbname.system.*在MongoDB数据库中名字空间.system.*是包含多种系统信息的特殊集合(Collection),如下:......
  • #Python基础 pandas索引设置
    一:XMIND  二:设置索引2.1 读取时设置索引  index_coldf=pd.read_excel("data.xlsx",index_col="date")在读取文件时,我们可以指定索引,上面代码指定了"da......
  • MySQL索引
    索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构1.1、索引的分类在一个表中,主键索引只......
  • 索引
    1.索引类似于数据库表的目录,可以快速定位到相关数据2.innodb使用b+树索引。memory中使用hash索引3.hash索引因为使用hash存储,所以单条查询速度快,但是因为hash无序,所以范......
  • mongodb 数据库
      一、简介MongoDB是一款流行的开源文档型数据库,从它的命名来看,确实是有一定野心的。 MongoDB的原名一开始来自于英文单词"Humongous",中文含义是指"庞大",即命......
  • Day03.mysql高级_函数和索引
    day03-mysql高级学习网站:索引高级:https://www.bilibili.com/video/BV1MS4y1T7uJ?from=search&seid=5032261320934971179&spm_id_from=333.337.0.0hashmap:https://www.......
  • 索引使用
    1.验证索引效率在未建立索引之前,执行SQL语句,查看SQL的耗时2.最左前缀法则如果索引了多列,要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引......