private void shardingKeyIndex() { // create shardingKey index if (ruleColumns != null) { ArrayList<Index> indexes = getIndexes(); boolean isMatch = false; for (Index index : indexes) { Column[] columns = index.getColumns(); if (columns.length != ruleColumns.length) { continue; } boolean shardingKeyIndex = true; for (int idx = 0; idx < columns.length; idx++) { if (columns[idx] != ruleColumns[idx]) { shardingKeyIndex = false; break; } } if (shardingKeyIndex) { index.getIndexType().shardingKeyIndex(); isMatch = true; } } if (!isMatch) { List<Column> asList = Arrays.asList(ruleColumns); addIndex("$shardingKey", New.arrayList(asList), IndexType.createShardingKey(false)); } } }