Indexing DB2数据库中的条件索引

Indexing DB2数据库中的条件索引,indexing,db2,Indexing,Db2,是否有可能在db2中创建条件索引 与oracle中的相同: CREATE UNIQUE INDEX my_index ON my_table ( CASE WHEN my_column = 1 THEN indexed_column ELSE NULL END); 或mssql: CREATE UNIQUE INDEX my_index ON my_table (indexed_column) WHERE my_column = 1 谢谢:)这看起来

是否有可能在db2中创建条件索引

与oracle中的相同:

CREATE UNIQUE INDEX my_index ON my_table (
  CASE WHEN my_column = 1
       THEN indexed_column
       ELSE NULL
  END);
或mssql:

CREATE UNIQUE INDEX my_index 
  ON my_table (indexed_column) WHERE my_column = 1

谢谢:)

这看起来像是一个精心设计的示例,但我看不到只包含值1和NULL的索引有任何好处

从DB2LUW10.5开始,就支持基于表达式的索引。如果无法升级,可以使用计算列模拟行为(Oracle在幕后就是这么做的)

在执行创建过程中也会检查唯一性 索引语句。如果表已包含具有重复键的行 值,则不会创建索引


如果我没有弄错的话,第一个应该可以在DB2中使用。当您尝试时发生了什么?当我尝试时,我得到:SQL错误:DB2SQL错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=CREATE UNIQUE INDEX UNQ_SINGLE_ACTIV;语句开头;,DRIVER=3.57.82这是因为我在每一行上都有一个标志,无论它是否处于活动状态,我只想索引活动记录。无法升级,因为我需要支持不同的db版本。“我只想为活动记录编制索引”-如果您收集分发统计信息,则无需编制索引。