0
私はスロットゲームを作っています。私はLogs
テーブルに各スピン結果を挿入しています。 プレイヤーは毎秒複数回のスピンをクリックすることができます 10,000人のユーザーがゲームをプレイしていると仮定すると、大量のデータがテーブルに取り込まれています。MS SQLの大負荷
その後、結果をウェブサイトからプレーヤーに表示します。 以下のクエリを使用していますが、ページが長すぎてデータを読み込めません。
SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY datetime desc) as rowNum
FROM Logs WHERE username=$username and datetime >= $startdate and datetime <= $enddate) sub
where rowNum between $startindex AND $endindex
Logs
表のスキーマ
CREATE TABLE [dbo].[GameLogs](
[id] [int] IDENTITY(1,1) NOT NULL,
[username] [nvarchar](50) NOT NULL,
[gamename] [nvarchar](150) NOT NULL,
[bet] [decimal](18, 2) NOT NULL,
[win] [decimal](18, 2) NOT NULL,
[datetime] [datetime] NOT NULL,
[gamelog] [nvarchar](3072) NULL
) ON [PRIMARY]
それは、テーブル内のデータの膨大な量のために願っています。 NoSQLの使用についての参考資料があります。
RowNumのインデックスを作成しましたか? – berthos
テーブル 'ログ 'のスキーマを教えてください。 – Joby
ありがとうございました。 私は既にインデックスrowNumです。 これは私のテーブルスキーマです。 [ユーザ名] [データ型はnvarchar(50)NOT NULL、 \tで[GameName] [NVARCHAR] \t、TABLE [DBO]。[GameLogs( \t [ID] [INT] IDENTITY(1,1)NOT NULLをCREATE (150)NOT NULL、 \t [ベット] [小数](18、2)NULL NOT、 \t [勝利] [小数](18、2)NULL NOT、 \t 、[日時]、[日時] NULL NOT \t [gamelog] [nvarchar](3072)NULL )ON [PRIMARY] – JangWei