run_select_query
Execute a SELECT query in a Hydrolix time-series database using Clickhouse SQL dialect, ensuring optimal performance with recommended filters or LIMIT clauses to manage query execution time and results.
Instructions
Run a SELECT query in a Hydrolix time-series database using the Clickhouse SQL dialect. Queries run using this tool will timeout after 30 seconds.
The primary key on tables queried this way is always a timestamp. Queries should include either a LIMIT clause or a filter based on the primary key as a performance guard to ensure they return in a reasonable amount of time. Queries should select specific fields and avoid the use of SELECT * to avoid performance issues. The performance guard used for the query should be clearly communicated with the user, and the user should be informed that the query may take a long time to run if the performance guard is not used. When choosing a performance guard, the user's preference should be requested and used if available. When using aggregations, the performance guard should take form of a primary key filter, or else the LIMIT should be applied in a subquery before applying the aggregations.
When matching columns based on substrings, prefix or suffix matches should be used instead of
full-text search whenever possible. When searching for substrings, the syntax column LIKE '%suffix'
or column LIKE 'prefix%'
should be used.
Example query. Purpose: get logs from the application.logs
table. Primary key: timestamp
.
Performance guard: 10 minute recency filter.
SELECT message, timestamp FROM application.logs WHERE timestamp > now() - INTERVAL 10 MINUTES
Example query. Purpose: get the median humidity from the weather.measurements
table. Primary
key: date
. Performance guard: 1000 row limit, applied before aggregation.
SELECT median(humidity) FROM (SELECT humidity FROM weather.measurements LIMIT 1000)
Example query. Purpose: get the lowest temperature from the weather.measurements
table over
the last 10 years. Primary key: date
. Performance guard: date range filter.
SELECT min(temperature) FROM weather.measurements WHERE date > now() - INTERVAL 10 YEARS
Example query. Purpose: get the app name with the most log messages from the application.logs
table in the window between new year and valentine's day of 2024. Primary key: timestamp
.
Performance guard: date range filter.
SELECT app, count(*) FROM application.logs WHERE timestamp > '2024-01-01' AND timestamp < '2024-02-14' GROUP BY app ORDER BY count(*) DESC LIMIT 1
Input Schema
Name | Required | Description | Default |
---|---|---|---|
query | Yes |
Input Schema (JSON Schema)
You must be authenticated.
Other Tools from mcp-hydrolix
Related Tools
- @hydrolix/mcp-hydrolix
- @hydrolix/mcp-hydrolix
- @ClickHouse/mcp-clickhouse
- @jovezhong/mcp-timeplus
- @jovezhong/mcp-timeplus