Firebird是否支持过滤索引?

时间:2016-11-08 11:52:33

标签: firebird

我正在尝试在Firebird中创建过滤索引,但我找不到它。有可能吗?

我指的是使用表中一部分行的索引。它存在于MS SQL Server中。

2 个答案:

答案 0 :(得分:1)

不,Firebird没有过滤(或部分)索引。 Firebird跟踪器中有一张改进票:http://tracker.firebirdsql.org/browse/CORE-3384,但尚未计划用于版本。

答案 1 :(得分:0)

我会将此作为评论发布,但我没有足够的声誉。

从以下答案中查看此引用:https://dba.stackexchange.com/a/133241

  

在SQL Server(以及其他RDBMS?)中,可以解决这个问题   使用过滤的索引。在SQL Server中,您将添加WHERE条件   在索引定义的末尾,说"仅应用此索引   具有状态<>的记录'完成' &#34 ;.然后任何查询使用此   谓词很可能会使用少量的索引   记录未设置为'完成'。但是,基于文档   在这里:http://www.firebirdsql.org/refdocs/langrefupd25-ddl-index.html,   它看起来不像Firebird支持过滤索引。

     

解决方法是要完成'完成' ArchiveTickets表中的记录。   创建一个具有完全相同定义的表(尽管没有任何自动   生成ID)作为您的Tickets表并在它们之间维护行   推动完成'记录到ArchiveTickets表。索引   然后,您的票证表将覆盖更少的记录   而且性能要高得多。这可能意味着你需要   更改任何引用'完成'门票指向   存档表或跨两个票证执行UNION   ArchiveTickets。这样做的好处是不仅速度快,   但也意味着你可以为。创建特定的索引   ArchiveTickets表使其更好地执行其他查询(for   实例:给我完整门票的平均完成时间)   门票表上不需要这些。

相关问题