public function getTableIndexByColumnsName($columnNames, $tableName = null, $connectionName = null)
    {
        if (!is_array($columnNames)) {
            $columnNames = [$columnNames];
        }

        $tableName = $this->validateTableName($tableName);

        $indexes = $this->getTableIndexes($tableName, $connectionName);
        foreach ($indexes as $index) {
            $indexColumns = $index->getColumns();
            // Check if columns are matched in index
            if (count($indexColumns) === count($columnNames) && count($indexColumns) === count(array_intersect($indexColumns, $columnNames))) {
                return $index;
            }
        }

        return false;
    }