私は整数の列score
と100万ビデオゲームの最高記録のテーブルを持っていると言います。ユーザーが上位50点を求めたら、私はselect * from highscores order by score desc limit 50
です。シンプル。しかし、ユーザーが51から100までのスコアを要求するとどうなりますか?私はトップ100を選ぶことができ、その後、データベースに接続する私のプログラムでは、最初の50行を無視します。しかしそれは無駄だろう。 200,000行から200100行までを要求した場合はどうなりますか?非効率性は悪化するだけです。クエリのセクションを取得
0
A
答えて
0
あなたは別のクエリの結果を照会することができます - あなたはいつもより多くのサイズの選択を行う必要がありますように見えます:
ここselect * from (
select * from highscores order by score desc limit 100
)
order by score asc limit 50
我々はトップ100のスコアを選択して、からそのグループの中から最も低いスコアの50を選択します。
より良い解決策は、スコア欄にインデックスを追加することです。トップにする場合は、
x
〜
y
のハイスコアを選択すると、行
x
行
y
。範囲ごとに行を選択する方法については、
this questionを参照してください。 SQL Serverでは
1
(2008+)
あなたは行
with topScores as
(
select *,row_number() over(order by score desc) rowNum from highscores
)
select * from topScores where (rowNum between 1 and 100) -- or rowNum between 101 and 200
または同じでゲームを考慮することDENSE_RANK()を使用の範囲を取得するためにROW_NUMBER()を使用することができます同じオーダーのスコア - 下のように
with topScores as
(
select *,dense_rank() over(order by score desc) scoreOrder from highscores
)
select * from topScores where (scoreOrder between 1 and 100) -- or scoreOrder between 101 and 200
in SQL Server 2012 +
あなたは101からに高得点の行を取得するために(それは一桁と同じスコアでゲームを考慮しません)句を取得OFFSET この例を使用することができます200
SELECT * FROM highscores ORDER BY score Desc OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY;
関連する問題
- 1. UITableviewセクションの最後のセルを取得
- 2. セクションアイテム:アイテムのタップでセクション名を取得
- 3. ログイン後にcrossDomainを取得するセクション
- 4. fetchedResultsController.sectionsからオブジェクトを取得[セクション]
- 5. 複数のセクションを持つ行とセクションのインデックスを取得しますか?
- 6. 取得SQLクエリ
- 7. 取得クエリと
- 8. MySQLクエリからクエリを取得
- 9. ASIHTTPRequest DBクエリ/取得?
- 10. Magentoのページ/セクションのURLを取得する方法
- 11. PHPのロジックと配列のセクションを取得
- 12. 特定のUITableViewCellのセクション番号を取得するには?
- 13. UITableViewの現在の固定セクションを取得する
- 14. MANページ内の特定のセクションを取得する方法は?
- 15. Interop経由でMicrosoft Publisherの異なるスタイルのセクションを取得
- 16. ASP.NETのWeb.ConfigからカスタムのAppSettingsセクションを取得します
- 17. のpython:JSONデータのセクションを取得し、構造
- 18. VueJs URLクエリを取得
- 19. NHibernate:SQLクエリでオブジェクトを取得
- 20. USER_ID(クエリ)でノードを取得
- 21. PEファイルのセクションから生データを取得
- 22. ユーレカフォームの多値セクションからフォーム値を取得
- 23. iOS:セクション化されたテーブルビューで行の位置を取得
- 24. 削除されたonenoteノート/セクション/ページのリストを取得
- 25. app.configファイルのweb.configセクションから値を取得しますか?
- 26. Get-IniContent Helpワイルドカードで特定のセクションを取得する
- 27. C#でWebClientの生のクエリを取得
- 28. APIの残りのクエリ/クォータを取得
- 29. 参加のクエリの結果を取得
- 30. NHibernateクエリで "周囲"の行を取得