**Describe the situation**

When using parameters (`param`) in the CLI or with the HTTP interface, the EmbeddedRocksDB engine will scan through all the data causing significant slowdown, instead of doing a proper RocksDB key lookup.

**How to reproduce**

setup.sql:
```sql
CREATE TABLE test1 (key String, value String) ENGINE=EmbeddedRocksDB PRIMARY KEY key;

-- do this a few times to exacerbate the issue
INSERT INTO test1 (*) SELECT n.number, randomString(10000) FROM numbers(10000) n;
INSERT INTO test1 (*) SELECT n.number, randomString(10000) FROM numbers(10000) n;
INSERT INTO test1 (*) SELECT n.number, randomString(10000) FROM numbers(10000) n;
```

```
❯ clickhouse client "--param_key=5000" --query "SELECT value FROM test1 WHERE key = {key:String} FORMAT JSON" | jq ".statistics"
{
  "elapsed": 0.20763,
  "rows_read": 10000,
  "bytes_read": 100218890
}

❯ clickhouse client --query "SELECT value FROM test1 WHERE key = '5000' FORMAT JSON" | jq ".statistics"
{
  "elapsed": 0.000519,
  "rows_read": 1,
  "bytes_read": 10022
}
```

**Version**
22.6.1.231


#include <rocksdb/table.h>
#include <rocksdb/convenience.h>
#include <cstddef>
#include <filesystem>
#include <shared_mutex>
namespace fs = std::filesystem;
namespace DB
{
namespace ErrorCodes
{
    extern const int BAD_ARGUMENTS;
    extern const int LOGICAL_ERROR;
    extern const int NUMBER_OF_ARGUMENTS_DOESNT_MATCH;
    extern const int ROCKSDB_ERROR;
}
using FieldVectorPtr = std::shared_ptr<FieldVector>;
using RocksDBOptions = std::unordered_map<std::string, std::string>;
static RocksDBOptions getOptionsFromConfig(const Poco::Util::AbstractConfiguration & config, const std::string & path)
{
    RocksDBOptions options;
    Poco::Util::AbstractConfiguration::Keys keys;
    config.keys(path, keys);
    for (const auto & key : keys)
    {
        const String key_path = path + "." + key;
        options[key] = config.getString(key_path);
    }
    return options;
}
static bool traverseASTFilter(