2017-05-12 10 views
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の使用についての参考資料があります。

+0

RowNumのインデックスを作成しましたか? – berthos

+0

テーブル 'ログ 'のスキーマを教えてください。 – Joby

+0

ありがとうございました。 私は既にインデックス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

答えて

0

SSMSで事前実行計画を実行してみてください。次に、索引が必要な場合は、その索引を記述する計画の上部に緑色のテキストが表示されます。