开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

PolarDB中where条件和xx代表的列名都是确定的吗?

PolarDB中where条件和xx代表的列名都是确定的吗?如果是的话,直接把语句填在里面就行。
call dbms_outln.add_optimizer_outline('', '/+ JOIN_PREFIX(c) /', '语句填进来');

展开
收起
小小爱吃香菜 2024-01-03 07:56:23 76 0
4 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    是的,在PolarDB中,where条件和列名都是确定的。您可以直接将语句填入其中。

    2024-01-03 14:43:50
    赞同 展开评论 打赏
  • 在 PolarDB 中,使用 dbms_outln.add_optimizer_outline 函数来添加查询优化器的大纲。这个函数允许你为特定的 SQL 语句定义一个优化器的大纲,以便在执行计划生成时使用。

    WHERE 条件和列名 xx 在你提供的示例中看起来是占位符,不是确定的列名或条件。你需要将它们替换为实际的列名和条件。

    以下是一个示例,演示如何使用 dbms_outln.add_optimizer_outline 函数:

    -- 添加优化器大纲  
    BEGIN  
      dbms_outln.add_optimizer_outline(  
        outline_name => 'my_outline',  
        sql_text => 'SELECT * FROM my_table WHERE column1 = :value1 AND column2 = :value2',  
        join_order => 'APPEND'  
      );  
    END;  
    /
    

    在上面的示例中,你需要将 my_outline 替换为你想要的优化器大纲名称,并将 my_table、column1、column2、:value1 和 :value2 替换为实际的表名、列名和条件值。

    2024-01-03 12:13:29
    赞同 展开评论 打赏
  • where 条件有可能列的个数是不定的。这种情况暂时是不支持的,只有等号后面或者 in 条件里这样的定值可以模板化,您这种连语句结构都不一样,本来执行计划就可能 不同,是支持不了的。只能给每个语句单独创建 outline。此回答整理自钉群“PolarDB 专家面对面 - 慢SQL索引选择优化器新特性”。

    2024-01-03 12:14:15
    赞同 展开评论 打赏
  • 在PolarDB中,WHERE条件和你提到的xx代表的都是确定的列名和值。当你调用CALL DBMS_OUTLN.ADD_OPTIMIZER_OUTLINE时,你可以将你的SQL语句填写在第三个参数的位置。例如:

    CALL DBMS_OUTLN.ADD_OPTIMIZER_OUTLINE('', '/+ JOIN_PREFIX(c) /', 'SELECT * FROM table1 t1 JOIN table2 t2 ON t1.column1 = t2.column2 WHERE t1.column3 = ''value''');
    

    在这个例子中,table1.column1table2.column2是你提到的xxt1.column3 = ''value'''是你的WHERE条件。

    2024-01-03 08:47:18
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载