suggest_query_optimizations
Enhance SQL query performance with AI-driven suggestions. Input your query to receive tailored optimization recommendations for improved efficiency and database operations.
Instructions
Get AI-powered suggestions for optimizing a SQL query
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Implementation Reference
- src/main.py:337-351 (handler)MCP tool handler: accepts SQL query, delegates to OpenAIClient for optimization suggestions, handles errors and context updates@mcp.tool() async def suggest_query_optimizations(query: str, ctx: Context) -> str: """Get AI-powered suggestions for optimizing a SQL query""" await ctx.info(f"Analyzing query for optimization: {query[:100]}...") try: openai = await get_openai_client() optimizations = await openai.suggest_optimizations(query) await ctx.info("Generated optimization suggestions") return optimizations except Exception as e: logger.error(f"Error suggesting optimizations: {str(e)}") await ctx.error(f"Failed to suggest optimizations: {str(e)}") raise
- src/openai_client.py:128-169 (helper)Core helper method in OpenAIClient: calls OpenAI API with Snowflake-specific optimization prompts to generate suggestions for improving the given SQL queryasync def suggest_optimizations(self, query: str) -> str: """Suggest optimizations for a SQL query""" system_prompt = """ You are a Snowflake SQL performance expert. Analyze the provided query and suggest optimizations. Consider: - Index usage and clustering keys - JOIN optimization - WHERE clause efficiency - Warehouse sizing recommendations - Query structure improvements - Snowflake-specific optimizations (clustering, materialized views, etc.) Provide specific, actionable recommendations. """ user_prompt = f""" SQL Query to optimize: {query} Please provide optimization suggestions. """ try: response = await self.client.chat.completions.create( model=self.model, messages=[ {"role": "system", "content": system_prompt}, {"role": "user", "content": user_prompt} ], temperature=0.2, max_tokens=800 ) optimization_suggestions = response.choices[0].message.content.strip() logger.info("Generated optimization suggestions") return optimization_suggestions except Exception as e: logger.error(f"Error generating optimizations: {str(e)}") raise Exception(f"Failed to generate optimization suggestions: {str(e)}")