OMG*_*ies 25 sql t-sql sql-server sql-server-2005
我有下表
EVENT_LOG
:
EVENT_ID: pk, int, not null
TYPEID: fk, int, not null
CATEGORYID: fk, int, null
SOURCE: varchar(255), null
DESCRIPTION: varchar(4000), null
CREATED: datetime, null
Run Code Online (Sandbox Code Playgroud)
我们一直在创建一份报告,发现性能很糟糕.除了群集之外没有任何索引.我们可以创建它们,但是因为这个表的写入次数超过了它的读数 - 所以有一个计数器称重性能问题.对于报告,我倾向于在每列上放置索引,因为需要在源和描述列中搜索子字符串.
我们想知道索引视图(AKA物化视图)是否是一个选项,其中索引视图将包含EVENT_LOG
表中的所有列,但在视图上创建了适当的索引.这会让我们获得报告的性能,同时不会影响对EVENT_LOG
表的写入吗?
Eri*_*ric 25
索引视图将导致与列上的索引相同的问题,因为索引视图需要with schemabinding
将其直接绑定到表,从而禁止您以任何方式,形状或形式更改/更改该表的架构.这包括调整列的大小(例如从 - varchar(50)
到varchar(255)
),更改列的数据类型(例如从 - double
到decimal(18,5)
)等等.我看到它们由于这个事实导致了许多意外的麻烦.
我的建议是设置一个存储过程或SSIS包,它将为您创建一个每小时左右运行一次的报告表.通过这种方式,您可以将永远爱好的地狱索引,并享受它产生的所有性能优势.我不喜欢现场正在进行的系统报道.我实际上还没有看到必要的情况.出于报告目的,小时信息通常绝对足以完成工作.
归档时间: |
|
查看次数: |
11014 次 |
最近记录: |