I am reading data from a table which has the following structure and indexes
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Bets](
[bwd_BetTicketNr] [bigint] NOT NULL,
[bwd_LineID] [int] NOT NULL,
[bwd_ResultID] [bigint] NOT NULL,
[bwd_LineStake] [bigint] NULL,
[bwd_CreatedAt] [datetime] NULL,
[bwd_DateModified] [datetime] NULL,
CONSTRAINT [PK_BetwayDetails] PRIMARY KEY CLUSTERED
(
[bwd_BetTicketNr] ASC,
[bwd_LineID] ASC,
[bwd_ResultID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idx___Bets__bwd_CreatedAt] ON [dbo].[Bets]
(
[bwd_CreatedAt] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [idx___Bets__bwd_DateModified] ON [dbo].[Bets]
(
[bwd_DateModified] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE NONCLUSTERED COLUMNSTORE INDEX [nccs___Bets] ON [dbo].[Bets]
(
[bwd_BetTicketNr]
)WITH (DROP_EXISTING = OFF, COMPRESSION_DELAY = 0) ON [PRIMARY]
GO
I would like to understand the decision of the table developer to use non-clustered columnstore index on the bwd_BetticketNr column and not a classic row-store, as in the date columns.
The production table is ~6 billion rows and unique bwd_Betticketnr values are ~50million
Running queries on test tables up to 50mil rows using row-store and columnstore has similar performance therefore I cannot emulate the scaling. Is columnstore more suitable due to data-type and cardinality?
I tried to find similar questions/posts/blogs making such comparison but I have not found anything yet.
I am using SQL Server 2017.