Query specific key fields from x-number of tables? I'm building an insurance database and I need some help with best practice on fast quering data.
Let's say I have three insurance types ... Car, Home and Travel.
Common for all three types, I have the &quot;Insurance&quot; table:
[dbo].[Insurance] (
    [InsuranceID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [CustomerID] [uniqueidentifier] NOT NULL,
    [CreatedDate] [datetime] NOT NULL
) 

And then I have the three insurance types:
[dbo].[InsuranceCar] (
    [InsuranceCarID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [InsuranceID] [uniqueidentifier] NOT NULL,
    [Model] [uniqueidentifier] NOT NULL
) 

[dbo].[InsuranceHome] (
    [InsuranceHomeID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [InsuranceID] [uniqueidentifier] NOT NULL,
    [Address] [uniqueidentifier] NOT NULL
) 

[dbo].[InsuranceTravel] (
    [InsuranceTravelID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [InsuranceID] [uniqueidentifier] NOT NULL,
    [Destination] [uniqueidentifier] NOT NULL
) 

All three insurance types have an &quot;key search field&quot; that I use for quering an insurance - in &quot;Car&quot; it is &quot;Model&quot;, in &quot;Home&quot; it is &quot;Address&quot; and in &quot;Travel&quot; it is &quot;Destination&quot;.
So the way I have solved it, is to create a &quot;_Search&quot; column in the &quot;Insurance&quot; table ...
[dbo].[Insurance] (
    [InsuranceID] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [CustomerID] [uniqueidentifier] NOT NULL,
    [CreatedDate] [datetime] NOT NULL,
    [_Search] [nvarchar(MAX)] NULL
) 

... and when any of the insurance type table rows is created/updated, then I copy the &quot;key seach field&quot; from the incurance type table into my &quot;Insurance&quot; tables &quot;_Search&quot; column (using trigger).
This way I can quickly query any key fields from the three insurance type tables by quering the &quot;_Search&quot; field in the &quot;Insurance&quot; table.
Problem is that it takes up more space in the database to do it like this.
Any better way to do this? Best practice?
Thanks.
Understand the problem first, worry about performance later.
This question is too broad and not a good fit for this venue.  However, as someone who works in the property and casualty industry I feel compelled to say... pump the brakes on this for a second.  If this is a hobby project... there are hobbies that are more relaxing.
This is not an easy undertaking, and I can say that I've seen many attempts at this, and they all get something wrong, especially when it comes to the problem you're describing - having multiple types of insurance contracts.
Ultimately that is what you are modeling here - a contract.  Insurance contracts have rules, they can be altered, premium must be calculated and balanced correctly, and they are highly regulated.
So the best practices here are:

Enforce as many contract provisions as possible through the data model
Anything that cannot be enforced through the model must be enforced through transaction logic
Make sure you are aware of the reporting and audit requirements of your jurisdiction

Please read this, then refer to the diagram below.  It's a head start.

This model doesn't even being to address some major concepts you will need address, such as:

Coverages/insurance lines/reporting codes
Governing jurisdictions
Limits/deductibles
Forms/endorsements
Managing customer information across policy types
Premium and policy accounting

As an aside, &quot;fast queries&quot; and GUIDs rarely occur together.  You'll also notice they are absent from the above data model.