Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →Splink does not simply compare every record with every other record in a typical prediction run. Its configured SQL blocking rules first generate candidate pairs; Splink then evaluates comparisons for those candidates, applies model-based weights and any enabled term-frequency adjustments, and returns scores. DuckDB executes the SQL, but the exact generated query and physical plan depend on the Splink release, settings, input data and runtime.
What happens when Splink predicts matches?
A useful way to understand the work is to separate candidate generation from scoring. Blocking determines which pairs are considered; the trained or estimated model determines how the evidence for each candidate affects its score.
As an Amazon Associate I earn from qualifying purchases.
- Generate candidate pairs. Splink evaluates prediction blocking rules written as SQL expressions over left (
l) and right (r) records. A pair is included if it satisfies at least one rule. If multiple rules find the same pair, Splink deduplicates it. The rules therefore control candidate volume and can also exclude true matches if they are too restrictive. See the Splink blocking tutorial and prediction tutorial. - Evaluate configured comparisons. For each candidate, Splink evaluates the configured Comparisons on fields or expressions. The resulting categorical comparison outcomes are commonly exposed in columns prefixed
gamma_. A gamma value identifies a comparison outcome; it is not itself a match probability. - Calculate model evidence. Splink uses the prior probability that a random pair matches and the estimated
manduprobabilities for comparison outcomes among matches and nonmatches. When enabled, term-frequency adjustments account for how common values are. Intermediate weights may appear inmw_columns and adjustment values intf_columns. The documented default prefixes aregamma_,mw_andtf_. The parameter-estimation tutorial explains that model parameters can be estimated from unlabeled records, while labels can improve estimation. - Return scores and apply any requested threshold. Splink combines the configured contributions into
match_weightandmatch_probability. Optionalthreshold_match_weightorthreshold_match_probabilitysettings filter results. APIs for scoring a known pair or explicitly supplied Cartesian products are distinct from ordinary blocking-basedpredict(); see the prediction API documentation.
Conceptually, the work is candidate-generating joins, comparison expressions, per-comparison evidence and model contributions, followed by score filtering if configured. That describes the process, not a literal SQL statement emitted by every Splink run.
Does Splink compare every row with every other row?
Usually, no: blocking limits scoring to pairs that satisfy at least one prediction rule. The Splink tutorial describes the purpose of blocking as reducing nonmatching comparisons enough to make computation practical while eliminating as few true matches as possible. A high score cannot recover a true pair that the blocking rules never generated.
#1 Best Overall
Blocking is a trade-off between candidate recall and workload. Broad or complementary rules may preserve more plausible matches, but generate more pairs; restrictive rules reduce work but risk missing matches. Common or placeholder values can create unexpectedly large blocks, so inspect candidate counts and block sizes before scaling up. Splink documents comparison-count and largest-block analysis tools in its blocking tutorial.
There is an important exception: Splink’s settings guide says an empty or omitted prediction blocking-rule list results in a Cartesian comparison. For a table with n rows, the documented pair count is n squared; the guide warns this is generally intractable at large scale. See Splink’s settings guide.
Rank #2
How does DuckDB execute the work?
The SQL dialect is associated with the database API and recorded in saved model settings. DuckDB’s general execution documentation describes a vectorized model in which operators work on vectors; it documents a default STANDARD_VECTOR_SIZE of 2048 tuples. This is an engine-level default, not a claim that every Splink operator processes exactly that many rows per step.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
That general execution description cannot tell you the exact joins, projections, filters, intermediate relations or physical operators for a particular Splink prediction. Those details vary with the Splink and DuckDB versions, settings, data and runtime. The DuckDB execution-format documentation describes vectorization, not a specific Splink query plan.
Which prediction approach fits the workload?
| Approach | What it does | Main trade-off |
|---|---|---|
| Rule-based blocking | Generates pairs satisfying one or more configured rules, then deduplicates pairs found through multiple rules. | Rules can reduce the scoring workload, but overly restrictive rules can exclude true matches. Candidate volume and recall depend on the data and rules. |
| Cartesian comparison | Generates every pair; an empty or omitted prediction rule list is documented to produce this behavior. | Pair count grows quadratically with row count and can become intractable at large scale. |
| Single-call prediction | Runs prediction on the supplied data and configuration in one call. | Can require substantial peak materialization for large workloads. |
| Chunked prediction | Splits the left and right inputs into a grid of chunks and processes chunks serially using the documented helper. | Can lower peak memory and provide progress reporting, but does not remove the total computation. Splink’s guide says processing all chunks yields the same result as one prediction call. |
The large-dataset tutorial suggests about 20 million comparisons as a practical target for DuckDB on a modest laptop and says more powerful machines may handle a billion or more. These are contextual documentation guidelines, not guarantees or benchmark results; feasibility depends on hardware, backend, blocking and data skew. The documentation’s illustrative tutorial timings likewise should not be treated as portable performance measurements.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How can you inspect what a particular run does?
For an implementation-level answer, pin the Splink and DuckDB versions, record the settings and input schema, and inspect SQL or an execution plan from that exact run. A general explanation or hand-written illustrative query cannot substitute for capturing the query generated by a specific configuration.
Rank #4
- Review the blocking rules and their marginal candidate counts, including duplicate pairs removed across rules.
- Check the largest blocks for skew caused by common or placeholder values.
- Decide whether intermediate calculation columns are needed for explanation or debugging. Splink’s parameter tutorial notes that disabling retention can make computations faster.
- Consider chunking when peak memory is a concern, recognizing that it processes subsets iteratively rather than reducing the total number of comparisons.
Splink’s documentation is rolling and does not pin the release in the pages cited here, so exact API details and emitted SQL should be checked against the version used in production.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




