optimizeSql
Analyze and optimize SQL performance by identifying bottlenecks and suggesting improvements for enhanced database query efficiency.
Instructions
Analyze and optimize SQL performance based on the provided SQL statement and database IDIf you don't know the databaseId, first use getDatabase or searchDatabase to retrieve it. (1) If you have the exact host, port, and database name, use getDatabase. (2) If you only know the database name, use searchDatabase. (3) If you don't know any information, ask the user to provide the necessary details. Note: searchDatabase may return multiple databases. In this case, let the user choose which one to use.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| database_id | Yes | DMS databaseId | |
| question | No | Natural language question | |
| sql | Yes | SQL statement | |
| model | No | Optional: if a specific model is desired, it can be specified here |
Implementation Reference
- Core handler function 'optimize_sql' that invokes the Alibaba Cloud DMS Enterprise API method 'optimize_sql_by_meta_agent' to analyze and optimize the provided SQL statement for the specified database.async def optimize_sql( database_id: str = Field(description="DMS databaseId"), question: Optional[str] = Field(default=None, description="Natural language question"), sql: str = Field(description="SQL statement"), model: Optional[str] = Field(default=None, description="Optional: if a specific model is desired, it can be specified here") ) -> Any: client = create_client() req = dms_enterprise_20181101_models.OptimizeSqlByMetaAgentRequest(db_id=database_id, query=question, sql=sql) # if mcp.state.real_login_uid: # req.real_login_user_uid = mcp.state.real_login_uid if model: req.model = model try: resp = client.optimize_sql_by_meta_agent(req) if not resp or not resp.body: return None data = resp.body.to_map() return data except Exception as e: logger.error(f"Error in optimize_sql: {e}") raise
- src/alibabacloud_dms_mcp_server/server.py:674-685 (registration)Registration of 'optimizeSql' tool in the configured database toolset (when default_database_id is set). This wrapper calls the core 'optimize_sql' handler with the pre-configured database ID.@self.mcp.tool(name="optimizeSql", description="Analyze and optimize SQL performance based on the provided SQL statement", annotations={"title": "SQL优化", "readOnlyHint": True, "destructiveHint": False}) async def optimize_sql_configured( question: Optional[str] = Field(default=None, description="Natural language question"), sql: str = Field(description="SQL statement"), model: Optional[str] = Field(default=None, description="Optional: if a specific model is desired, it can be specified here") ) -> Any: result_obj = await optimize_sql(database_id=self.default_database_id, question=question, sql=sql, model=model) return result_obj
- src/alibabacloud_dms_mcp_server/server.py:759-762 (registration)Direct registration of the core 'optimize_sql' handler as the 'optimizeSql' tool in the full toolset (when no default database is configured). Requires explicit database_id parameter.self.mcp.tool(name="optimizeSql", description=f"Analyze and optimize SQL performance " f"based on the provided SQL statement and database ID" f"{DATABASE_ID_DESCRIPTION}", annotations={"title": "SQL优化", "readOnlyHint": True})(optimize_sql)