The performance of specific queries that include Metadata columns Marten provides some predefined indexes you may optionally enable
See also Metadata Queries
Last Modified
Should you be using the ModifiedSince(DateTimeOffset)
or ModifiedBefore(DateTimeOffset)
you can ask Marten to create
an index on the document's mt_last_modified
metadata column either using IndexedLastModifiedAttribute
:
[IndexedLastModified]
public class Customer
{
}
Or by using the fluent interface:
DocumentStore.For(_ =>
{
_.Schema.For<User>().IndexLastModified();
});
Soft Delete
If using the Soft Deletes functionality you can ask Marten
to create a partial index on the deleted documents either using SoftDeletedAttribute
:
[SoftDeleted(Indexed = true)]
public class IndexedSoftDeletedDoc
{
public Guid Id;
}
Or by using the fluent interface:
DocumentStore.For(_ =>
{
_.Schema.For<User>().SoftDeletedWithIndex();
});
This will help Postgres answer queries using IsDeleted()
, DeletedSince(DateTimeOffset)
and DeletedBefore(DateTimeOffset)
much more efficiently, Postgres will only index documents when they are deleted, mt_deleted = true
, which also means that the index
does not need to be updated for any insert or update where mt_deleted = false