我目前正在处理一个处理错误记录的系统,目前90%(约有9 000 000 ~10 000 000)的日志帖子是诊断消息,几乎没有使用。剩下的是需要处理的实际错误。这两种类型的日志主要包含相同类型的信息,并且通过非聚集索引进行区分。我正在考虑将诊断消息移到一个单独的表中,但我不确定这是值得的。
今天系统没有被广泛使用,但将来可能会发生变化,我担心诊断消息的数量可能对性能产生影响。我可以从创建新表来处理日志记录中获得什么利弊?
答案 0 :(得分:0)
Sql server(至少从2008 r2版本开始)允许您create non-clustered filtered indexes.
因此,如果您希望改进仅选择该位列包含特定值的行,您可以在该列上使用过滤索引 - 保持索引尽可能小,并使搜索尽可能有效。
您所要做的就是在索引中添加where
子句:
CREATE NONCLUSTERED INDEX <IndexName>
ON <TableName> (<columnsList>)
WHERE <bitColumn> = 1 ;
当然,您需要将<>
内的所有内容替换为实际名称。