问题描述
你好,问一下汤姆团队。
我有一个14列表,数百万行,高度使用。我需要添加另一列 (FLAG_STATE),这将有两个不同的值 (0/1); 就像 “布尔”。
该表通常由客户列和doc列查询。客户可以拥有多个文档 (有时是同一文档的3或4次)。我有一个关于 (客户,医生) 的索引。现在,我需要将FLAG_STATE列添加到表中。
如果我想通过FLAG_STATE过滤,我应该使用什么样的索引?现有索引可以吗?我应该将新列添加到现有索引吗?我应该使用null值作为状态,并在需要时仅用 “1” 标记行吗?我还缺少什么?
提前感谢。
问候,
我有一个14列表,数百万行,高度使用。我需要添加另一列 (FLAG_STATE),这将有两个不同的值 (0/1); 就像 “布尔”。
CREATE TABLE SCHEMA.TABLE1 ( ID NUMBER GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 MAXVALUE 9999999999999999999999999999 MINVALUE 1 NOCYCLE CACHE 20 NOORDER NOKEEP) NOT NULL, ... CUSTOMER VARCHAR2(15 BYTE) NOT NULL, DOC VARCHAR2(9 BYTE) NOT NULL, ... FLAG_STATE NUMBER(1,0) )
该表通常由客户列和doc列查询。客户可以拥有多个文档 (有时是同一文档的3或4次)。我有一个关于 (客户,医生) 的索引。现在,我需要将FLAG_STATE列添加到表中。
如果我想通过FLAG_STATE过滤,我应该使用什么样的索引?现有索引可以吗?我应该将新列添加到现有索引吗?我应该使用null值作为状态,并在需要时仅用 “1” 标记行吗?我还缺少什么?
提前感谢。
问候,
专家解答
你在这个表上运行什么样的查询?他们对现有的索引没问题吗?将FLAG_STATE添加到索引会带来什么性能差异?新列的值的 (预期) 数据分布是什么-50:5080: 20,99: 1?
如果使用现有索引查询足够快 => 您probably不需要更改索引
如果查询速度太慢,则需要考虑您的选项。创建包括FLAG_STATE的索引只是其中之一。
根据查询和数据分布,更改索引可能会提高您所需的速度。或者可能没什么区别。甚至可能使查询变慢!
回答我上面的问题将帮助您确定是否值得添加/更改索引以包含此列。
如果使用现有索引查询足够快 => 您probably不需要更改索引
如果查询速度太慢,则需要考虑您的选项。创建包括FLAG_STATE的索引只是其中之一。
根据查询和数据分布,更改索引可能会提高您所需的速度。或者可能没什么区别。甚至可能使查询变慢!
回答我上面的问题将帮助您确定是否值得添加/更改索引以包含此列。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




