Indexing DB2数据库中的条件索引
是否有可能在db2中创建条件索引 与oracle中的相同: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 谢谢:)这看起来
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版本。“我只想为活动记录编制索引”-如果您收集分发统计信息,则无需编制索引。