是否可以使用FluentMigrator创建filtered index?方案是我想在可能包含NULL的列上创建唯一索引,因此过滤器应排除索引列为NULL的行。
我修改了FluentMigrator生成的SQL Server 2012中的索引以使用这样的过滤器,并且可以确认它运行良好,所以剩下的难题就是生成此选项。
答案 0 :(得分:6)
由于这是一个非常特定于Sql Server的功能,因此您可能会回退到sql。
流畅风格的原因之一是它不是特定于数据库的,因此可以针对不同的数据库类型运行相同的迁移。但是如果你只是想使用Sql Server并想要使用特定于数据库的功能,那么关于FluentMigrator的好处就是它允许你执行sql语句。对于我们在FluentMigrator中永远不会支持的高级内容以及存储过程的更改,建议使用此方法。
这只是:
Execute.Sql(@"CREATE NONCLUSTERED INDEX FIBillOfMaterialsWithEndDate
ON Production.BillOfMaterials (ComponentID, StartDate)
WHERE EndDate IS NOT NULL;");
Postgres也有部分索引,所以这可能是我们将来添加到FluentMigrator的东西。