【发布时间】:2019-03-07 00:10:29
【问题描述】:
我在 SQL Server 2008 R2 中创建了如下表:
CREATE TABLE [dbo].[7And11SidedDiceGame]
(
[Dice11Sides] [INT] NULL,
[Dice7Sides] [INT] NULL,
[WhoWon] [INT] NULL
)
我添加了以下索引:
CREATE NONCLUSTERED INDEX [idxWhoWon]
ON [dbo].[7And11SidedDiceGame] ([WhoWon] ASC)
然后我创建了一个 WHILE 循环来插入 2500 万个随机生成的行来统计结果以进行统计分析。
一旦我优化了插入函数(在循环之前和之后使用 BEGIN TRAN 和 COMMIT TRAN),While 循环运行良好。但是,分析数据需要很长时间。例如:使用以下语句大约需要 4 分钟来执行:
DECLARE @TotalRows real
SELECT @TotalRows = COUNT(*)
FROM [test].[dbo].[7And11SidedDiceGame]
PRINT REPLACE(CONVERT(VARCHAR, CAST(@TotalRows AS money), 1),'.00','')
SELECT
WhoWon, COUNT(WhoWon) AS Total,
((COUNT(WhoWon) * 100) / @TotalRows) AS PercentWinner
FROM
[test].[dbo].[7And11SidedDiceGame]
GROUP BY
WhoWon
我的问题是如何更好地索引表以加快数据检索?还是我需要以不同的方式提取数据?
【问题讨论】:
标签: sql sql-server sql-server-2008-r2