PgHintPlan 1.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package PgHintPlan --version 1.0.2                
NuGet\Install-Package PgHintPlan -Version 1.0.2                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PgHintPlan" Version="1.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add PgHintPlan --version 1.0.2                
#r "nuget: PgHintPlan, 1.0.2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install PgHintPlan as a Cake Addin
#addin nuget:?package=PgHintPlan&version=1.0.2

// Install PgHintPlan as a Cake Tool
#tool nuget:?package=PgHintPlan&version=1.0.2                

PgHintPlan

.NET Test NuGet Version

PgHintPlan

Run

dotnet add package PgHintPlan

Enable the extension

// create the data source
var dataSourceBuilder = new NpgsqlDataSourceBuilder(connString);
await using var dataSource = dataSourceBuilder.Build();

// enable extension using the data source
await dataSource.EnablePgHintPlanAsync();

// alternatively, you can use the connection
var conn = dataSource.OpenConnection();
await conn.EnablePgHintPlanAsync();

PgHintPlan.EntityFrameworkCore

Run

dotnet add package PgHintPlan.EntityFrameworkCore

Import the library

using PgHintPlan.EntityFrameworkCore;

Enable the extension

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.UsePgHintPlan();
}

Configure the connection

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UsePgHintPlan();
    optionsBuilder.UseNpgsql();
}

Disable Hash Join

var items = await ctx.Items
    .EnableHashJoin(false)
    .ToListAsync();

Force nested loop for the joins on the tables

var data = await ctx.Products
    .Join(ctx.Items,
        (product) => product.Id,
        (item) => item.ProductId,
        (product, item) => new
        {
            ProductId = product.Id,
            Id        = item.Id
        })
    .NestLoop(ctx.Items.EntityType, ctx.Products.EntityType)
    .ToListAsync();

Force index scan on the table


var index = ctx.Items.EntityType
    .GetIndexes()
    .Where(i => i.Name == "test_index")
    .Single();

var items = await ctx.Items
    .IndexScan(ctx.Items.EntityType, index)
    .ToListAsync();

You can stack as many commands as you want


var items = await ctx.Items
    .EnableHashAgg()
    .EnableHashJoin(false)
    .EnableIndexOnlyScan()
    .ToListAsync();

Supported Commands:

Join methods

  • HashJoin
  • NoHashJoin
  • NestLoop
  • NoNestLoop

Scan methods

  • SeqScan
  • TidScan
  • IndexScan
  • IndexOnlyScan
  • BitmapScan
  • IndexScanRegexp
  • IndexOnlyScanRegexp
  • BitmapScanRegexp
  • NoSeqScan
  • NoTidScan
  • NoIndexScan
  • NoIndexOnlyScan
  • NoBitmapScan

Join order

  • Leading

Behavior control on Join

  • Memoize
  • NoMemoize

Row number correction

  • SetRows

Parallel query configuration

  • Parallel

GUC

  • EnableHashAgg
  • EnableHashJoin
  • EnableIndexOnlyScan
  • EnableIndexScan
  • EnableMaterial
  • EnableNestLoop
  • EnablePartitionPruning
  • EnablePartitionWiseAggregate
  • EnablePartitionWiseJoin
  • EnableSeqScan
  • EnableSort
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on PgHintPlan:

Package Downloads
PgHintPlan.EntityFrameworkCore

pg_hint_plan support for EntityFrameworkCore

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.3 203 2/2/2024
1.0.2 117 2/2/2024
1.0.1 128 2/2/2024
0.0.3 119 2/1/2024
0.0.2 112 2/1/2024
0.0.1 116 2/1/2024